附加JSON数组以进行选择

时间:2014-10-16 12:26:17

标签: javascript jquery arrays 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

2 个答案:

答案 0 :(得分:3)

看来您的PHP正在输出内容类型为text/html的JSON,并且因为您没有告诉jQuery您期望JSON,它不会解析响应,最后您会'重新尝试在字符串上调用$.each

添加一个dataType,告诉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(...);

答案 1 :(得分:0)

是的,您可以使用以下方式:

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