我的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);
});
答案 0 :(得分:3)
查看控制台:
XMLHttpRequest无法加载 http://xml.hosting.subsplash.com/5KQ4CM/json.js。起源 {}不允许http://secure.codepen.io 访问控制允许来源。
如果他们支持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);
});