JSON不能与JQuery一起使用

时间:2013-01-23 15:47:25

标签: javascript jquery json

我的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 个答案:

答案 0 :(得分:3)

查看控制台:

  

XMLHttpRequest无法加载   http://xml.hosting.subsplash.com/5KQ4CM/json.js。起源   {}不允许http://secure.codepen.io   访问控制允许来源。

了解same origin policy

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


[编辑]

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

托管服务器没有正确处理响应类型,另外你需要以JSONP的方式执行此操作,或者如果使用getJSON add?callback =?最后到你的网址。

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

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