2012-05-07 73 views
3

我在這裏讀到一些主題如何從一個對象獲取屬性值。獲取通過json從Controller接收的對象屬性值作爲Hashtable

在我的情況,我在控制器東西:

[HttpPost] 
public ActionResult GetSomething() { 

return Json(new { 
    data = AModel.Get() 
    }, JsonRequestBehavior.AllowGet); 

} 

在模型:

public static List<Hashtable> Get() { 
    List<Hashtable> list = new List<Hashtable>(0); 
    Hashtable table = new Hashtable(); 
    table.Add("ITEM_1", "Value1"); 
    table.Add("ITEM_2", "Value 32"); 
    list.Add(table); 

    table = new Hashtable(); 
    table.Add("ITEM_1", "Value22"); 
    table.Add("ITEM_2", "Other"); 
    list.Add(table); 

    return list; 
} 

而且在Javascript:

var test; 
$.ajax({ 
    type: "post", 
    url: "Action/Controller", 
    data: {}, 
    dataType: "json", 
    async: false, 
    success: function (data) { 
      test = data.data; 
     }, 
    complete: function() { 
      console.log(test);    
}); 

我在控制檯得到了像在以下圖片:

enter image description here

我想要得到屬性ITEM_1和結果給我的值:Value1,Value22。

我試着用

for(var key in test) { 
console.log(test[key].ITEM_1); 
//console.log(test[key].ITEM1); 
} 

,但它不工作。

當然,我將ITEM_1鍵改名爲ITEM1(模型中),但結果相同:undefined但在控制檯中,我看到了所有對象的值。

enter image description here

請幫助我。

回答

3

test是一個數組而不是一個對象。通過像數組循環:

var testLength = test.length;   //caching length, performance benefit 
    i, item1; 

for(i=0;i<testLength;i++){ 
    item1 = test[i].Properties.ITEM1; 
} 
+0

衛生署,什麼是簡單的:)我忘了環路測試用'for'聲明:) –

+0

@MichaelSwan'爲in'僅在對象和數組不能使用。 – Joseph

+0

現在我學會了,謝謝:) –