JSON不能使用JQuery

我的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); }); 

看看控制台:

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

阅读相同的原始政策 。

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


[编辑]

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

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

如果您在http://api.jquery.com/jQuery.getJSON/上阅读了jQuery.getJSON()文档,
它说:由于浏览器的安全限制,大多数“Ajax”请求都遵循相同的原始策略; 请求无法成功从其他域,子域或协议中检索数据。 另外要记住:从jQuery 1.4开始,如果JSON文件包含语法错误,请求通常会以静默方式失败。

托管服务器没有正确处理响应类型,另外你需要以JSONP或者如果使用getJSON add?callback =? 最后到你的url。

 var url = "http://xml.hosting.subsplash.com/5KQ4CM/json.js?callback=?"; $.getJSON(url, function(response){ alert("worked!"); alert(response); });