2014-03-25 113 views
1

我有一個從視圖中獲取Django對象的Ajax函數。如何在jQuery中訪問Django對象

我想訪問jQuery中的對象的所有屬性,但我不能這樣做。

$.ajax(
{ 
    url: domain+'/game/android/',            
    type:"POST", 
    success:function(response){ 
     response = jQuery.parseJSON(response);       
     localStorage['userCard'] = response.user_cards_held; 
     localStorage['compCard'] = response.comp_cards_held; 
     localStorage['game'] = response.game;        
     alert(response.user_cards_held);// **this shows all the fields. ** 
     alert(response.user_cards_held.fields);//This does not work. Gives the value as undefined 
     window.location = 'file:///android_asset/www/game.html';       
    }, 
    error:function(xhr, status, error){ 
     var err = eval("(" + xhr.responseText + ")"); 
     alert(err.Message);  

    }, 

}); 

觀是這樣的:

from django.core import serializers 
... 
json = serializers.serialize('json', objectlists) 
return HttpResponse(json, mimetype="application/json") 

對象是這樣的:

[{ "model" : "object.list", "pk" : 1, "fields" : { "name" : "...", ... } }] 

我已經檢查了這個問題:Question Referenced 這是行不通的。 我在做什麼錯?

編輯:

獲取字段妥善我已經取得了成功的功能如下變化 -

success:function(response){ 
     response = jQuery.parseJSON(response);       
     localStorage['userCard'] =jQuery.parseJSON(response.user_cards_held); 
     localStorage['compCard'] = jQuery.parseJSON(response.comp_cards_held); 
     localStorage['game'] = jQuery.parseJSON(response.game);        
     alert(jQuery.parseJSON((response.user_cards_held));// **this shows all the fields. ** 
     alert(jQuery.parseJSON(response.user_cards_held.fields));//This does not work. Gives the value as undefined 
     window.location = 'file:///android_asset/www/game.html';       
    } 
+0

什麼是Django dict對象? JSON對象的外觀如何?你確定有'.fields'嗎? –

+0

@Bibhas我已經做了一些更新,請檢查 –

回答

2

response.user_cards_held是一個數組對象 -

>> [{ "model" : "object.list", "pk" : 1, "fields" : { "name" : "...", ... } }] 
// ^----- Array 

所以當然response.user_cards_held.fields將是未定義的。您的實際對象是response.user_cards_held[0]因此,您可以訪問之類的fields屬性。

+0

我已經試過這個。它僅警告第一個「[」。 –

+0

這意味着'response.user_cards_held'是一個JSON字符串,不是一個JSON對象。您必須首先將其解析爲JSON對象。 –

+0

非常感謝,我解析了其他變量後,它工作得很好。 –

0
[{ "model" : "object.list", "pk" : 1, "fields" : { "name" : "José", ... } }] 

// convert JSON string to JSON Object:<br> 
var data = $.parseJSON(response);<br> 
// acess name atribute<br> 
**data[0].fields.name**; 
+2

雖然代碼可能會回答問題,但最好包含關於解決方案原因的描述和任何相關參考。 –

+0

@TimHutchison我更喜歡「閉嘴並顯示代碼」的方法,我放的代碼被註釋掉了。該參考資料是我自己的應用程序,因爲我查看時沒有找到任何參考。但我會盡力改善這一點,謝謝。 –