AJAX将JSON字符串发送到另一个域

时间:2016-04-13 00:46:59

标签: php json ajax cross-domain

据我所知,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

2 个答案:

答案 0 :(得分:0)

您可以使用PHP cURL将该json数据发送到另一个域。使用AJAX与本地PHP文件通信,其中该文件是cURL函数,用于保存和返回响应。

这是帮助您入门的PHP cURL doc

答案 1 :(得分:-1)

我认为您应该使用CURL从网址获取内容$ url = =" https://example.com/destination.php"