我想使用Ajax发出请求,但当我意识到域名不同时,我决定改用JSON。
代码:
$(".name").click(function(){
//Get information
var id = $(this).attr("id").substring(1);
jQuery.getJSON("https:/otherdomain.com/makereq.php?id="+id+"&callback=?",
function(data) {
alert("id: " + data.id);
return false;
});
});
$jsonData = array('id'=>$_GET['id']);
echo $_GET['callback'] . '(' . json_encode($jsonData) . ');';
在Firefox中运行良好。我获取数据,警报显示发送和接收的ID。但在Internet Explorer中,出现安全错误,表示内容已被阻止且未收到数据。在Chrome中,它既不起作用。
为什么会发生这种情况或者我做错了什么?有没有解决方案来发送和接收数据而没有来自其他域的浏览器错误/警报?
答案 0 :(得分:0)
我认为这不可能这样做。尝试在您的域上使用桥接PHP文件,该文件使用cURL读取其他主机内容。这肯定会奏效。
答案 1 :(得分:0)
查看getJSON
上的jQuery page。当您尝试在跨域请求上使用回调数据时, JSONP 部分就是您所追求的。
getJSON()
无效。你想要做的是使用回调的名称编写一个函数,并实际将php文件返回的数据作为javascript文件加载。
<script src="https:/otherdomain.com/makereq.php?id=1&callback=callBack"></script>
<script>
callBack(data) {
[do stuff...]
}
</script>