декодирование массива JSON (из PHP) в Javascript (jQuery) - PullRequest
0 голосов
/ 15 июля 2010

Сначала я пишу JSON:

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
print json_encode(array(
    "array" => $arr
));

Затем в jQuery я делаю:

j.post("notifications.php", {}, function(data){

Теперь я немного растерялся, как обычно:

data.array

Чтобы получить данные, но я не уверен, как обращаться с массивом.data.array[1] не работает.

Спасибо!

Ответы [ 2 ]

1 голос
/ 15 июля 2010

Ассоциативные массивы PHP становятся объектами (хешами) в javascript.

data.array.a === 1
data.array.b === 2
// etc

Если вы хотите перечислить эти значения

for ( var p in data.array )
{
  if ( data.array.hasOwnProperty( p ) )
  {
    alert( p + ' = ' + data.array[p] );
  }
}
0 голосов
/ 15 июля 2010

@ Питер уже объяснил, что ассоциативные массивы в PHP кодируются как объекты JSON.

Таким образом, вы также можете изменить свой массив PHP на:

$arr = array(1,2,3,4,5); // or array('a', 'b', 'c', 'd', 'e');

Однако другойважно убедиться, что jQuery распознает ответ от сервера как JSON, а не как текст.Для этого передайте четвертый параметр в функцию post():

j.post("notifications.php", {}, function(data){...}, 'json');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...