jQuery迭代JSON错误

时间:2014-08-06 05:14:07

标签: jquery json

我有JSON数据如下

{"4":"Bangles","2":"Rings"}

我正在尝试迭代内容以填充下拉列表

$("#ProductProductTypeId").change(function(){
           var product_type_id = $(this).val();
           console.log(product_type_id);

           $.ajax({
              type: "get",
              url: "/alankruti/admin/product_categories/get_category/"+product_type_id,
              //data: country_id,
              success:function(data){
                console.log(data);
                var options = '';
                $.each(data, function (key,value) {
                    console.log(key);
                    console.log(value);
                     options += '<option value="'+key+'">'+value+'</option>';
                     console.log(key + " " +value)
                });
              }
           });

     });

错误:

enter image description here

3 个答案:

答案 0 :(得分:2)

首先使用jQuery.parseJSON从数据字符串创建一个jSON对象。然后,您可以使用$.each进行迭代。

示例

success:function(data){
    // create json object from data (string)
    jsonObj = jQuery.parseJSON( data);
    console.log(data);
    var options = '';
    // iterate through json
    $.each(jsonObj , function (key,value) {
            console.log(key);
            console.log(value);
            options += '<option value="'+key+'">'+value+'</option>';
            console.log(key + " " +value)
    });
}

JSFiddle Demo

参考

答案 1 :(得分:1)

带上你的json:

{"4":"Bangles","2":"Rings"}

像这样的简单each()循环有效:

$.each(items, function(k, values) {
    console.log(k);
    console.log(values);
});

JSFiddle Demo


简单地说,你所要做的就是

var options;
$.each(items, function(k, values) {
    options += "<option value='" + k + "'>" + values + "</option>";
});
// then append options to select...

答案 2 :(得分:0)

同意dknaack的回答。或者,尝试设置dataType:&#34; json&#34;在ajax。这确保了在successHandler中,数据对象是一个json对象。

$.ajax({
type: "get",
dataType : "json",
...