我看了與此相關的其他問題,但還沒有找到的東西,回答我的(第一個!)問題與Ajax請求的頁面:Django的序列化JSON工作在控制檯上,而不是在
我m序列化一個django視圖並用ajax(jquery)發送給服務器。我收到序列化的數據(包括警報進行了測試並獲得了JSON數據,200 OK效應初探),但我無法得到以下就成功而努力:
$('div#nextSet' + currentLetter).click(function(){
var output = '';
$.ajax({
url: 'path/to/django/view',
data: {'data':sentToServer},
datatype: 'json',
error: function(xhr_data) {
display_error();
},
success: function(data) {
$.each(data, function(i){
var firstName =data[i].fields.first_name;
var lastName = data[i].fields.last_name;
var portrait = data[i].fields.portrait;
var output = '<ul><li>' + firstName + ' ' + lastName + '</li>';
output += '<li><img src="' + portrait + '" /></li></ul>';
alert(output);
});
}
});
});
這段代碼在谷歌Chrome和Firefox的工作在控制檯(警報顯示帶有示例html),但無法在頁面上運行。我收到以下錯誤:
未捕獲TypeError:無法讀取未定義的屬性'first_name'。
我已經試過控制檯查看如何訪問的JavaScript地圖/字典的項目,我能夠進入以下時,得到的值,與實際數字替換我: 數據[數字]點域。 first_name 該值顯示在控制檯中,並且不顯示任何錯誤消息。
這是從單個項目的django視圖返回的數據樣本: var data = [{「pk」:8,「model」:「app.model」,「fields」:{「portrait 「:
」this/is/the/photo/path.png「,」first_name「:」First「,」last_name「:」LastName「}},]。
所有這些都嵌入在成功代碼中,這意味着什麼都不應該執行(?),除非回調可用。因此,如果數據存在 - 當警報(數據)正在工作,並且我從服務器獲得200 OK響應 - 並且代碼在控制檯中工作 - 意味着警報已處理並顯示,是否有某些我可以忽略?
感謝@Storm指着我用的console.log正確的方向內。 ajax的參數應該是* dataType *,而不是* datatype *。所以它將它解釋爲字符串而不是JSON。這顯然沒有顯示在控制檯中,因爲它被正確識別爲JSON對象!感謝您的幫助... – clekstro