2015-01-15 2 views
0

Я использую jQuery ajax для извлечения json-объекта с php-страницы.php json_encode имеет 2 ключа для одного объекта

На стороне PHP Я использую

while ($row = mysql_fetch_array($result)) { 
    array_push($retval, $row); 
} 

, а затем

echo json_encode($retval); 

, чтобы вернуть его.

Я получаю JSON на клиенте от jQuery ajax call как массив с двумя ключами для одного и того же значения в каждом объекте. Один ключ - это позиция индекса, а другая - имя. Для например: каждый объект в массиве выглядит следующим образом:

0: "1234" 
1: "2014-11-01" 
hc_month: "2014-11-01" 
hc_wi_fi_unique: "1234" 

Любые указатели о том, почему я получаю такие результаты? (Используется для решения таких задач JSON_FORCE_OBJECT)

PS: У меня нет контроля над использованием mysqli или PDO над mysql. Просто FYI.

ответ

2

Не json_encode проблема, но mysql_fetch_array:

http://php.net/manual/en/function.mysql-fetch-array.php

Тип возвращаемого массива зависит от того, как определяется result_type. К с использованием MYSQL_BOTH (по умолчанию) вы получите массив с ассоциативными и номерами. Используя MYSQL_ASSOC, вы получаете только ассоциативные индексы (как работает mysql_fetch_assoc()), используя MYSQL_NUM, вы получаете только индексов числа (как работает mysql_fetch_row()).

Так MYSQL_ASSOC или использовать mysql_fetch_assoc, хотя я добавляю обязательно: Сойти расширения MySQL и использовать Mysqli или PDO.

+0

Работает отлично !. Благодарю. И mysqli или PDO - это не выбор, который я упоминал в вопросе. :) Примите ответ через минуту. – Rakesh

+0

Просто увидел это. Я перестала читать, увидев проблему. – AbraCadaver

Смежные вопросы