2012-01-13 77 views
3

我對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(); 

回答

2

在查看來自兩個帶有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