2011-12-10 55 views
0

感谢解析JSON阵列和提取价值,我通过JSON现在通过数组中,并设置数据类型为JSON,按您的例子如:的选择列表ID和价值

{"car_make_id":"3","car_engine_type":"Non-Turbo Petrol"}{"car_make_id":"3","car_engine_type":"Non-Turbo Diesel"}

但我的脚本仍然拒绝追加选择选项和值?:

$("select#make").change(function(){ 
    $('#engine').find('option').remove().end(); //clear the engine ddl 
    var make = $(this).find("option:selected").val(); //Need the value not the text - .Text() 
    //alert(make); 
    //do the ajax call 
    $.ajax({ 
     url:'get-engine.php', 
     type:'GET', 
     data:{engine:make}, 
     dataType:'json', 
     cache:false, 
     success:function(data){      
//var parsedjson = data=JSON.parse(data); //no need if data:type json 

$.each(data, function(index, item) { 


    $("<option/>", { 
     value: item.car_make_id, 
     text: item.car_engine_type 
    }).appendTo("#engine"); 
}); 


    } 

}); 
}); 

似乎无法找到为什么它不会解析阵列?

回答

2

的JSON结构非常糟糕,所以真正的问题是修复你的JSON是合乎逻辑的。不管怎么说 这里就是你可以用当前的尝试:

$.ajax({ 
    url: 'grabdata.php', 
    type: 'GET', 
    data: { 
     type: make 
    }, 
    dataType: "json", 
    cache: false, 
    success: function (data) { 

     $.each(data, function (index, item) { 

      for(var key in item) {} 

      $("<option/>", { 
       value: key, 
       text: item[key] 
      }).appendTo("#engine"); 
     }); 
    }, 
    error: function (jxhr) { 
     alert(jxhr.responseText); 
    } 
}); 

的jsfiddle:http://jsfiddle.net/DBg2L/1/

+0

完美 - 非常感谢你,感谢我坚持与我一起确定我的问题的根源。 它的成员和你一样,使得这个社区如此珍贵,特别是对于像我这样的新开发者。 – Marc

+0

@Marc,只是修复JSON。由于结构'for(var key in item){}'是需要的,它看起来很丑。 – Esailija

+1

@Marc,这里是一个简单的JSON结构的例子http://jsfiddle.net/DBg2L/2/ – Esailija

0

我不完全理解你的问题,特别是关于“因此需要ID值为”1“并列出选项作为名称的部分。”但下面将填充与采取parsedjsonv)的每个属性的值option元件作为值和每个属性(i)的名称作为对用户可见的值select元件:

$.each(parsedjson, function(i, v){ 
    $('select#engine').append('<option value="' + v + '">' + i + '</option>'); 
}); 
+0

嗨,对不起 - 我会阐述我的榜样。我的数组将包含2行,引擎类型和引擎制造商ID。我需要解析数组,使引擎制造商ID作为选择ID,引擎类型作为选项值。因此,如果我的阵列是{“1”:“1”,“Turbo Diesel”:“Turbo Diesel”,“Turbocharged Petrol”:“Turbocharged Petrol”,“Non-Turbo Petrol”:“Non-Turbo Petrol”}我需要值为“1”的ID,以及作为引擎类型的选项。 – Marc

+0

我还是不明白。应该将1附加到'select#engine'选择器上,比如'$('select#engine1')'? – maxedison

+0

嗨,如果通过json发送的数组是: {“4”:“Turbo Diesel”} {“4”:“Turbocharged Petrol”} {“4”:“Turbo Diesel Max”} {“4”:“Turbocharged汽油最大“} 我需要选择#引擎有其值和选项设置为<选择值=”4“>涡轮柴油等 迭代整个阵列。 – Marc