据我所知,AJAX无法在两个不同的域之间工作。我需要将JSON数据从一个网页发送到另一个拥有PHP页面的域,该页面将在数据库中记录该JSON数据。
我尝试使用AJAX与本地PHP文件通信,然后将该PHP文件POST到目标域PHP文件。
我的AJAX代码:
$.ajax({
url: './remote.php',
type: 'POST',
data: {
sentdata: data
},
success: function(response) {
document.getElementById("responseMsg").innerHTML = response;
}
});
我的本地PHP文件remote.php:
$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";
}
在我想要覆盖的域名的destination.php中,我有:
$data = json_decode(file_get_contents('php://input'));
echo $data;
当它运行时,我看到它回应“失败”。 file_get_contents($ url,false,$ context);没有得到任何回报。
是否有任何理由将此AJAX执行到另一个域的策略不起作用?或者我做错了什么?
编辑:我还验证了在php.ini 中将allow_url_fopen设置为on答案 0 :(得分:0)
您可以使用PHP cURL将该json数据发送到另一个域。使用AJAX与本地PHP文件通信,其中该文件是cURL函数,用于保存和返回响应。
这是帮助您入门的PHP cURL doc。
答案 1 :(得分:-1)
我认为您应该使用CURL从网址获取内容$ url = =" https://example.com/destination.php"