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