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

时间:2011-12-10 12:50:42

标签: php javascript jquery json

谢谢,我现在通过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");
});


    }

});
});

似乎无法找到解析数组的原因?

2 个答案:

答案 0 :(得分: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/

答案 1 :(得分:0)

我不完全理解你的问题,特别是关于“所以需要ID值为1”的部分,并列出选项作为名称。“但是,以下内容将使用select元素填充option元素,这些元素将parsedjsonv)中每个属性的值作为每个属性的值和名称{{{ 1}})作为用户可见的值:

i