【发布时间】:2013-07-17 12:16:37
【问题描述】:
我正在尝试使用 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 <
那么如何以正确的方式制作呢?
【问题讨论】:
-
代码开头的注释说明了问题不是吗?也就是说,“显然服务不会给出 JSON 格式的响应”——你不能只告诉 jQuery 使用 jsonp 并期望另一端的服务神奇地满足它。
-
响应应该包含 jsonp 内容,而不是 html 或其他任何内容。
-
stackoverflow url 只是一个例子,重点是:我不知道服务返回的是哪种数据。大多数网站没有开放的 API 或返回 json 数据。我只是想找到一种通用的方式。
-
@SamSu 你不能使用 JSONP 访问任意跨域数据除非数据是 JSONP!