无法解析来自jQuery Ajax的JSON响应调用
问题描述:
我对jquery/ajax相对来说比较新,而且我很难从一个非常简单的JSON ajax调用中解析结果。这是我的code。在这个例子中有2个测试URL:注释的URL按预期工作,但未注释的URL没有(根据jslint它们都是正确格式化的JSON)。任何想法为什么会抛出一个解析错误,而另一个不会(他们都是第三方域)?无法解析来自jQuery Ajax的JSON响应调用
预先感谢您!
function getNews2() {
$.ajax({
//url: "http://api.ihackernews.com/page?format=jsonp",
url: "http://recs.coremetrics.com/iorequest/restapi?cm_cid=90232642&cm_zoneid=Mobile&cm_targetid=FULO-0101",
dataType: "jsonp",
success: function(data, textStatus, xhr) {
alert("SUCCESS recsStatus=" + textStatus);
alert(JSON.stringify(data));
},
error: function(data, textStatus, errorThrown) {
alert("FAILURE recsStatus=" + textStatus);
alert(JSON.stringify(data));
}
});
}
getNews2();
答
在查看来自两个带有CURL的URL的响应之后,不起作用的不是jsonp响应。这是一个JSON响应。它不包含在json p工作所需的方法调用中。
不工作的一个是
{"io":{"rec_count":12,...}}
VS
HNCallback({"nextId":null,...})
看到区别?
由于源策略相同,您将无法从任一网址获得纯json响应。因此,您需要使用CORS(如果您控制其他域)或jsonp(如当前配置使用的)或服务器端代理。
谢谢你的回应。请原谅我的无知,但没有办法将json(从网络请求)转换为格式正确的jsonp响应?我认为“dataType(json jsonp);”会这样做,或可能使用dataFilter选项? – thehagbag 2012-01-13 20:09:09
没有。由于相同的原始策略,您甚至无法获取json数据。 – hvgotcodes 2012-01-13 20:09:46
所以,如果结果不是跨域请求的JSONP,这是不可能的......感谢您的帮助! – thehagbag 2012-01-13 20:47:54