2012-09-05 44 views
5

我的代碼如下所示:AJAX - JQuery的GET回調不工作,但JSON文件訪問OK

$.get('http://files.mysite.com/data.json', function(data) { 
    console.log(data); 
}, "jsonp"); 

當我看看的Network菜單裏面的螢火蟲,我可以看到一個有效的調用我的JSON文件當我打開它時,它保留了所有的信息。

Console保持沉默。沒有AJAX調用的跡象,也沒有我的日誌data

我的AJAX呼叫與我的JSON文件不在同一個域中。這就是爲什麼我使用jsonp

任何想法??

回答

13

我不能完全確定你的問題是什麼,如果你得到一個結果,但控制檯保持安靜,你可能有問題與JSON本身...嘗試JSONLint找問題。

而且我建議你不要使用的getJSON等

$.ajax({ 
    url: http://files.mysite.com/data.json, 
    dataType: 'jsonp', 
    cache: false, 

    beforeSend: function() { 
     console.log("Loading"); 
    }, 

    error: function (jqXHR, textStatus, errorThrown) { 
     console.log(jqXHR); 
     console.log(textStatus); 
     console.log(errorThrown); 
    }, 

    success: function (data) { 
     console.log('Success'); 
     console.log(data); 
    }, 

    complete: function() { 
     console.log('Finished all tasks'); 
    } 
}); 

這樣你得到一些錯誤處理和其他可愛的小功能,你可以通過添加一個beforeSend裝載微調,並通過完全刪除:)

編輯: 與下面的一個替換錯誤的功能,這使我們的問題是什麼:)

error: function (jqXHR, textStatus, errorThrown) { 
    console.log(jqXHR); 
    console.log(textStatus); 
    console.log(errorThrown); 
} 
+0

我的控制檯告訴我下面的:加載 錯誤 對象{的readyState = 4,狀態= 200,狀態文本=「成功「} 完成所有任務 - 網絡菜單仍然加載文件,內容並解釋JSON ... – Ron

+0

和jsonlint告訴我,我的JSON是有效的 – Ron

+0

因此它運行錯誤函數很好,只是不是成功函數? –

0

如果您知道響應將是json,那麼最好使用$ .getJSON而不是get。控制檯應該現在

$.getJSON('http://files.mysite.com/data.json', function(data) { 
console.log(data); 
}); 
+1

案例SENS一個更好的主意itive!這是'$ .getJSON()' – devnull69

0

JSONP不支持看here,只有XML,JSON,腳本,HTML 所以使用JSON,而是如果你沒有跨域策略問題

$.get('http://files.mysite.com/data.json', function(data) { 
    console.log(data); 
}, "json"); 
工作
+0

不幸的是我有一個跨域訪問..​​. – Ron

+0

@Ron在這種情況下,使用$就與類型:「獲取」,JSONP在AJAX方法支持:)另外,這個帖子將有助於http://devlog.info/2010/03/10/cross-domain-ajax/ –