2014-10-16 89 views
1

我想這個JSON數組追加到一個選擇框追加JSON陣列選擇

{ 
    "10":"Branche", 
    "2":"Marketing & Comunicatie", 
    "8":"Test Branche 1", 
    "9":"Test Branche 2", 
    "6":"Test Branche 3", 
    "7":"Test Branche 4", 
    "1":"Webdevelopment & design" 
} 

但它不工作,我編碼它從一個PHP數組。這是我試圖循環的方式。

this.addOption = function(name, table, value){ 
    $.ajax({ 
     type: "POST", 
     data: {action:'add', table:table, value:value}, 
     url: "index.php", 
    }) 
    .done(function(obj) { 
     $("#"+name+"-select").empty() 
     console.log(name); 
     $.each(obj, function(key, value) { 
      $("#"+name+"-select").append('<option value='+key+'>'+value+'</option>'); 
     }); 
    }); 
} 

其中,obj是JSON數組。

這是給我這個錯誤:

enter image description here

+0

請問你的JSON來'OBJ '?也許它需要再次解析。 – Sirko 2014-10-16 12:27:50

+1

看起來對我很好:http://jsfiddle.net/2nas43ae/ – CodingIntrigue 2014-10-16 12:27:59

+0

哦,這很奇怪..一定是在我的代碼中的其他地方,然後我猜..我更新了我的答案,以整個AJAX請求。 – 2014-10-16 12:30:35

回答

3

看來,你的PHP與內容類型的text/html和輸出JSON因爲你沒有告訴jQuery你期待JSON,它不會分析響應,最後你試圖在字符串上調用$.each

添加一個數據類型來告訴jQuery來明確解析響應爲JSON:

$.ajax({ 
    type: "POST", 
    data: {action:'add', table:table, value:value}, 
    url: "index.php", 
    dataType: 'json' 
}) 

另外,設置在你的PHP正確的內容類型:

header('Content-type: application/json'); 
echo json_encode(...); 
0

是的,你可以使用以下方法:

for(k in obj) { 
    $("#branch-select").append('<option value='+k+'>'+obj[k]+'</option>'); 
} 
+1

確實他們可以。但這不是問題:) – CodingIntrigue 2014-10-16 12:30:58