解析JSON数组并提取选择列表ID和Value的值


Parse JSON array and extract values for select list ID and Value

谢谢,我现在通过json传递数组并将数据类型设置为json,根据您的示例:

{"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");
});

    }
});
});

似乎找不到为什么它不会解析数组?

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/

我不完全理解你的问题,特别是关于"所以需要ID值为"1"和列表选项作为名称的部分。"但是下面将用option元素填充select元素,这些元素将parsedjson (v)中的每个属性的值作为值,并将每个属性的名称(i)作为用户可见的值:

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