jQuery和JSON的跨域请求在Internet Explorer中不起作用(安全问题?)



我想使用Ajax进行请求,但当我意识到域不同时,我决定使用JSON。

代码:

主PHP文件(脚本代码)

$(".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;
    });
});

Makereq PHP文件

$jsonData = array('id'=>$_GET['id']);
echo $_GET['callback'] . '(' . json_encode($jsonData) . ');';

这在Firefox中运行良好。我得到数据,警报显示发送和接收的id。但在互联网;资源管理器,出现一个安全错误,表示内容已被阻止,数据未收到。在Chrome中,它也不起作用。

为什么会发生这种事,或者我做错了什么?有没有任何解决方案可以在没有浏览器错误/警报的情况下发送和接收来自其他域的数据?

我认为这不能用这种方式完成。试着在你的域上使用一个桥接PHP文件,用cURL读取其他主机的内容。这肯定行得通。

查看getJSON上的jQuery页面。JSONP上的部分是您在跨域请求上尝试通过回调使用数据时所要关注的内容。

getJSON()在这里不起作用。您想要做的是使用回调的名称编写一个函数,并将php文件返回的数据实际加载为javascript文件。

<script src="https:/otherdomain.com/makereq.php?id=1&callback=callBack"></script>
<script>
    callBack(data) {
       [do stuff...]
    }
</script>

最新更新