需要帮助才能使用从jquery ajax请求返回的数组

时间:2011-02-26 18:19:29

标签: jquery json

我有一个简单的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}

上述外出格式可能有一些线索。我对阵列感到不舒服,不知道答案是对还是错。

任何想法都会有所帮助。

1 个答案:

答案 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不会自动执行此操作)