正如標題所示,我試圖從api提供的api中檢索json。我已經嘗試了各種各樣的東西,並得到了不同的結果。我希望能夠檢索和解析json以獲取我想要的信息。以下是我已經試過:當按鈕被點擊
1)$阿賈克斯() 代碼塊(運行):
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
alert('Success!');
}
});
這將產生一個「原產地空沒有被訪問控制允許 - 允許原產地「。錯誤,並沒有得到服務器的響應(對於Chrome或FF,我不關心IE,因爲這是我使用的一個小項目)。 Looking around我想這個問題可能是因爲我想連接到一個外部網站,所以我需要它是一個jsonp數據類型。這導致我嘗試#2
2)$就用JSONP的dataType
$.ajax({
type: 'GET',
url: url,
dataType: 'jsonp',
success: function(data) {
alert('Success!');
}
});
我還附加 「&回調=?」到我給該函數的「url」的末尾。使用Chrom的開發工具這次我可以看到來自服務器的響應,但警報從不顯示。我使用JSONLINT來確認響應是一個合適的json(它是),並且我已經嘗試將json設置爲一個變量,以便我可以使用它(沿着初始化腳本標記[var response; ]並試圖將json分配給它[response = data;])。當我嘗試提醒(響應)時,這產生未定義的;後來(我不相信response = json;有些位因爲某種原因被調用)。
我也嘗試過使用$ .getJSON,但看着它的api它顯然只是運行$ .ajax無論如何(我幸運地獲得相同的響應/錯誤時,嘗試json vs jsonp爲$ .getJSON,因爲我做嘗試$ .ajax)。當我嘗試作爲jsonp Chrome(FF不會產生此錯誤)時顯示「意外的語法錯誤:意外的標記:」。 This讓我覺得我正在嘗試與之交談的網站沒有jsonp工作,並且我無法像訪問json請求那樣訪問第三方網站。該鏈接討論如何設置服務器返回application/json而不是text/html,就像我從我的回覆中得到的那樣,爲他們解決了問題(但是,我試圖訪問第三方網站,因此我可以不能訪問服務器)。
我已經在Chrome和FF中試過這個,並查看了開發工具/ Firebug for each,並且看到了相同的東西(儘管FF不會產生原點錯誤,但顯然這是Chrome的一個錯誤)。
另外:我已經採取了json響應返回並運行$ .parseJSON對它,並能夠抓住各種片斷,但我怎樣才能訪問json一旦我得到$ .ajax/$。getJSON工作?
任何想法/解決方案將不勝感激。
可能是跨域的起源策略的問題。你需要檢查你的服務器API是否支持跨域。 – shashankaholic 2012-04-20 20:09:23