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
'= =' sadece bir yazım hatası mı? '$ url = =" https://example.com/destination.php "; – Marcus
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
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