Требуется помощь для использования массива, возвращенного из запроса jquery ajax - PullRequest
0 голосов
/ 26 февраля 2011

У меня есть простой вызов 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);

Ответ Ajax Jquery установлен на 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}

Возможно, есть некоторые подсказки в вышеприведенном формате outout.Я не достаточно удобен с массивами, чтобы знать, является ли ответ правильным или неправильным.

Любые идеи будут более чем полезны.

1 Ответ

0 голосов
/ 26 февраля 2011

Это не правильный 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 не делает этого автоматически)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...