无法解析来自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(如当前配置使用的)或服务器端代理。

+0

谢谢你的回应。请原谅我的无知,但没有办法将json(从网络请求)转换为格式正确的jsonp响应?我认为“dataType(json jsonp);”会这样做,或可能使用dataFilter选项? – thehagbag 2012-01-13 20:09:09

+0

没有。由于相同的原始策略,您甚至无法获取json数据。 – hvgotcodes 2012-01-13 20:09:46

+0

所以,如果结果不是跨域请求的JSONP,这是不可能的......感谢您的帮助! – thehagbag 2012-01-13 20:47:54