2015-03-25 86 views
0

我正在使用jquery從服務器調用Json對象。這是我的電話:從jQuery調用jQuery訪問鍵值對

$.getJSON(url, function(data) {...} 

我取回(從執行console.log)以下對象:

> 0: Object 
    cable key: "1" 
    cable type: "Building Wire..." 
> 1: Object 
    cable key: "2" 
    cable type: "PVC Wire..." 
... 

我試圖同時訪問鍵和值如下面的例子沒有任何的運氣。

$.getJSON(url, function(data) { 

    $.each(data, function(key, value) { 

     $("#CableType").append($("<option value='" + value['cable key'] + "'>" + value['cable type'] + "</option>")); 

    }); 
}) 

感謝所有幫助

+0

它工作正常。 http://jsfiddle.net/8wdzqpc1/ – Hiral 2015-03-25 07:59:27

回答

1

您正在試圖獲得的價值,而不是對象的屬性。使用

data['cable key'] 

代替

value['cable key'] 

旁邊,將元素添加到一個循環內的DOM是低效的。你需要在一個字符串中收集你的html,並在循環結束後,把它放在DOM中。你可以這樣做:

$.getJSON(url, function(data){ 
    var htmlCollection = "", 
     propertyName; 

    data.forEach(function(pair){    
     htmlCollection += "<option value='" + pair['cable key'] + "'>" + pair['cable type'] + "</option>"; 
    }); 

    $("#CableType").append(htmlCollection); 
}); 
+0

嗨@Yair Tavor,當我嘗試你的方法(數據['varname'])我得到未定義。 – TheRealPapa 2015-03-25 08:19:59

+0

您是否使用for-in循環而不是$ .each函數來試用它? – 2015-03-25 08:30:28

+0

AH,我把它改成了「data.forEach(function(d){」loop,現在我可以通過「d.cable_type」來訪問這些值了,謝謝! – TheRealPapa 2015-03-25 08:38:18