我有一个简单的jquery ajax调用,它会发布一个汽车制造商并使用一系列汽车模型进行响应,以便可以填充模型的选择菜单(选项)。
我在php / mysql中构建数组如下。
$make = $_POST['make'];
//QUERY
$query=mysql_query("SELECT id,model FROM cars WHERE manufacturer='$make'")or die(mysql_error());
while($row=mysql_fetch_array($query)){
$id=$row['id'];
$model=$row['model'];
$arr[$id]=$model;
}
//ADD TO CALLBACK
$data['models'] = $arr;
$data['success'] = true;
//RETURN JSON
echo json_encode($data);
Jquery ajax响应被设置为JSON作为数据类型,在成功函数中我放置了以下内容来测试响应,其中data.models是从php返回的数据。
$.each(data.models,function(key, value) {
alert(key + ': ' + value);
});
我可以从firebug看到数据正在被返回,但是ajax总是会引发错误响应。
我不明白为什么。
我得到的典型回应是
{"models":{37:"DB7 Vantage Coupe '00",38:"DB9 Coupe '03",39:"DB9 Coupe '06",40:"V8 Vantage '99",41:"Vanquish '04"},"success":true}
上述外出格式可能有一些线索。我对阵列感到不舒服,不知道答案是对还是错。
任何想法都会有所帮助。
答案 0 :(得分:0)
这不是合适的JSON:
{"models":{37:"DB7 Vantage Coupe '00",38:"DB9 Coupe '03",39:"DB9 Coupe '06",40:"V8 Vantage '99",41:"Vanquish '04"},"success":true}
在JSON中,所有键都是字符串,但是您有整数(例如37和38)作为键。尝试将$ id转换为php代码中的字符串,然后将它们放入$ arr中,这样它们就会在JSON中引用(虽然我不确定为什么json_encode不会自动执行此操作)