0

我正在尝试使用 jQuery 从远程跨域站点获取和解析数据。为了避免同源策略和跨域问题,我使用 jsonp。

<html>  
<head>  
<title>Ajax Sample</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
</style>
<script>
$(document).ready(function(){
    //Obviously the service wont give a JSON format response
    var url='http://stackoverflow.com/search?q=Cross+domain';
    $.ajax({
     url:url,
     dataType: 'jsonp',
     success:function(data){
         console.log(data);
     },
     error:function(){
         alert("Error");
     },
    });
});
</script>
<body>
</body>  
</html>

但我得到的是error

Resource interpreted as Script but transferred with MIME type text/html: "http://stackoverflow.com/search?q=Cross+domain&callback=jQuery1708665772899985313_1374154944485&_=1374154944492"

Uncaught SyntaxError: Unexpected token < 

那么如何以正确的方式实现呢?

4

1 回答 1

-2

如果远程端没有Content-Type为其 JSONP 输出设置正确的标头,则第一个警告是正常的。这只是一个警告,不会造成任何伤害。

如果第二个错误是由于尝试访问 stackoverflow 网站,那么该错误仅仅是因为您试图在 JS 解释器中抛出 HTML 代码。

请注意,JSONP 请求必须以有效 JS 脚本的形式接收 JSON。它不适用于任何其他类型的输入。

出于安全原因,您不能从其他来源访问其他类型的资源,除非这些资源发送适当的Access-Control-Allow-OriginHTTP 标头。

于 2013-07-18T13:52:01.170 回答