2016-04-13 25 views
0

AJAX'ın iki farklı etki alanı arasında çalışamayacağını anlıyorum. JSON verilerini bir web sayfasından bir JS sayfasındaki bir DB'ye kaydeden bir PHP sayfasına sahip olan başka bir alana göndermem gerekiyor.AJAX JSON dizesini başka bir alana gönder

Denediğim şey, yerel bir PHP dosyasıyla iletişim kurmak için AJAX'ı kullanmaktı, ardından bu PHP dosyasını POST dosyasını hedef etki alanları PHP dosyasına sahip olmaktı.

Benim AJAX kodu:

$.ajax({ 
    url: './remote.php', 
    type: 'POST', 
    data: { 
     sentdata: data 
    }, 
    success: function(response) { 
     document.getElementById("responseMsg").innerHTML = response; 
    } 
}); 

My Yerel PHP dosyası remote.php:

$data = json_decode(file_get_contents('php://input')); 
echo $data; 
: etki alanında destination.php olarak
$url = "https://example.com/destination.php"; 
$data = json_encode(($_POST['sentdata'])); 
$build = array('http' => 
    array(
     'method' => 'POST', 
     'header' => "Content-type: application/x-www-form-urlencoded\r\n", 
     'content' => $data 
    ) 
); 
$context = stream_context_create($build); 
$return = file_get_contents($url, false, $context); 
if($return) { 
    echo "success"; 
} else { 
    echo "failure"; 
} 

Ben var ulaşmaya çalışıyorum

Çalıştığımda bunun "yanılma" olduğunu görüyorum. File_get_contents ($ url, false, $ bağlam); geri bir şey almıyor.

AJAX'ı başka bir etki alanına dönüştürme stratejisinin işe yaramayacağı herhangi bir neden var mı? Yoksa yanlış bir şey mi yapıyorum?

DÜZENLEME: Ben de allow_url_include'u php.ini

+0

'= =' sadece bir yazım hatası mı? '$ url = =" https://example.com/destination.php "; – Marcus

+0

Ve aslında başka bir alana * AJAX * araması yapmıyorsunuz. Muhtemelen aynı alanda, diğer yöntemlerle harici bir sunucuya erişen './Remote.php' diyorsunuz. 'file_get_contents()' – Marcus

+0

Evet = = bir yazım hatası oldu, ben düzeltildi. Marcus, benim anlayışım AJAX'ın doğrudan harici sunucuya arama yapmanıza izin vermeyeceğidir, bu yüzden bu konuda çalışma girişimdi. Anlıyorum, teknik olarak başka bir alana bir AJAX çağrısı değil. – Mitch

cevap

0

Başka bir alan için bu json verilerini göndermek için PHP cURL kullanabilirsiniz içinde üzerine kurulmuştur doğrulandı. Yerel bir PHP dosyası ile iletişim kurmak için AJAX kullanın, bu dosya altında CURL işlevini kaydedin ve yanıtı döndürün.

Başlamak için PHP cURL doc İşte.

+1

Bakacağım. Teşekkür ederim! Ancak yukarıda bahsettiğim metodun işe yaramayacağı bir sebep var mı? – Mitch

+0

belki destination.php düzgün izinlere sahip değil –

-1
+0

Diğer yanıt cURL'de iyi bir seçenek gibi görünüyor, ama şu anda görüntülediğim bu yöntemin neden işe yaramayacağını merak ediyorum. – Mitch

0

Her şey ben yayınlanmıştır çıkıyor yaptığı işlerde bir şey almak kullanmak gerektiğini düşünüyorum. Dış sunucularda PHP dosyalarında daha sonra problemler vardı ve bu da başarısızlığa neden oluyordu. Daha fazla sorun giderme işleminden sonra sorun bu değildi.

Diğerlerinin de belirttiği gibi, cURL bunu yapmak için de harika bir çözüm olacaktır. Ancak bu, gayet iyi çalışıyor ve cURL gerektirmiyor.

İlgili konular