0

我的 JSON 有问题吗?

http://codepen.io/anon/pen/Ieyvl

var url = "http://x.com/json.js";

$.getJSON(url, function(response){
    alert("worked!");
    alert(response);
});

如果它是一个“跨域”问题,那么为什么会这样呢?

http://codepen.io/anon/pen/BHshC

var url = "http://gdata.youtube.com/feeds/api/playlists/PL3E245DF445E37F50?v=2&alt=jsonc";

$.getJSON(url, function(response){
    alert("worked!");
    alert(response);
});
4

4 回答 4

3

看控制台:

XMLHttpRequest 无法加载 http://xml.hosting.subsplash.com/5KQ4CM/json.js。Access-Control-Allow-Origin 不允许来源 http://secure.codepen.io 。

阅读有关同源政策

如果他们支持,您需要使用 JSONP。如果服务器支持它,请查看CORS


[编辑]

我没有检查,但如果 Google 示例有效,可能是因为 Google 为该资源启用了 CORS。这意味着支持它的浏览器可以通过 Ajax 调用请求资源。并非所有浏览器都支持这种类型的握手请求。[看着你老的 IE]

于 2013-01-23T15:51:14.600 回答
0

它是有效的 JSON,也许 jquery 有问题,因为它返回 mimetype application/javascript 而不是 application/json

于 2013-01-23T15:51:00.763 回答
0

如果您阅读http://api.jquery.com/jQuery.getJSON/上的 jQuery.getJSON() 文档,
它会显示以下内容: 由于浏览器安全限制,大多数“Ajax”请求都受同源策略的约束;请求无法从不同的域、子域或协议成功检索数据。还要记住:从 jQuery 1.4 开始,如果 JSON 文件包含语法错误,请求通常会静默失败。

于 2013-01-23T16:03:51.037 回答
0

托管服务器未正确处理响应类型,此外您需要将其作为 JSONP 执行,或者如果使用 getJSON 添加 ?callback=? 最后到你的网址。

var url = "http://xml.hosting.subsplash.com/5KQ4CM/json.js?callback=?";

$.getJSON(url, function(response){
    alert("worked!");
    alert(response);
});
于 2013-01-23T16:20:26.570 回答