Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.02.2013, 01:51
Новичок на форуме
Отправить личное сообщение для dima_tr Посмотреть профиль Найти все сообщения от dima_tr
 
Регистрация: 19.07.2011
Сообщений: 9

Как получить javasript массив из php?
Доброй ночи.

Есть простой массив.

var zxc = [["Saab","Volvo","BMW","asd","asd","asd","asd"],["Saab","Volvo","BMW","asd","asd","asd","asd"]]


Его я дальше передаю как аргумент функции. Все работает без проблем.

Теперь немного усложним задачу.

Этот массив я генерирую в php и его я передаю через ajax.

Вопрос: в каком формате он должен быть на выходе в php?
И каким образом мне превратить ajax response в массив в javascript?
Ответить с цитированием
  #2 (permalink)  
Старый 01.02.2013, 02:23
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

<?php

$array = [["Saab","Volvo","BMW","asd","asd","asd","asd"],["Saab","Volvo","BMW","asd","asd","asd","asd"]];

header('Content-type: application/json');
echo json_encode($array);


В случае со старой версией php использовать старый синтаксис array(..)

xhr.onload = function(response) {
    var array = JSON.parse(response);
    console.log(array);
}


Имеются проблемы с кроссбраузерностью. (JSON и onload событие)
Ответить с цитированием
  #3 (permalink)  
Старый 01.02.2013, 03:00
Новичок на форуме
Отправить личное сообщение для dima_tr Посмотреть профиль Найти все сообщения от dima_tr
 
Регистрация: 19.07.2011
Сообщений: 9

Такой вариант я уже пробовал.

При

var array = JSON.parse(response);


У меня typeof(array) = string вместо нужного object
Ответить с цитированием
  #4 (permalink)  
Старый 01.02.2013, 03:24
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

var response = '[["Saab","Volvo","BMW","asd","asd","asd","asd"],["Saab","Volvo","BMW","asd","asd","asd","asd"]]';
var array = JSON.parse(response);
alert(typeof(array));
alert(array);


Цитата:
C:\Users\Данил>php -r "$array = array(array("Saab","Volvo","BMW","asd","asd","as
d","asd"),array("Saab","Volvo","BMW","asd","asd"," asd","asd")); echo json_encode
($array);"
[["Saab","Volvo","BMW","asd","asd","asd","asd"],["Saab","Volvo","BMW","asd","asd
","asd","asd"]]

Последний раз редактировалось danik.js, 01.02.2013 в 03:29.
Ответить с цитированием
  #5 (permalink)  
Старый 01.02.2013, 03:34
Новичок на форуме
Отправить личное сообщение для dima_tr Посмотреть профиль Найти все сообщения от dima_tr
 
Регистрация: 19.07.2011
Сообщений: 9

Все, получилось.

Спасибо, danik.js, большое.

Итоги:

В PHP не использовать json_encode.

На клиенте просто JSON.parse(response).
Ответить с цитированием
  #6 (permalink)  
Старый 01.02.2013, 03:34
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Ошибочка небольшая.

xhr.onload = function(e) {
    var array = JSON.parse(this.responseText);
    console.log(array);
}
Ответить с цитированием
  #7 (permalink)  
Старый 01.02.2013, 03:37
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

dima_tr, если исходный массив уже представлен ввиде JSON-строки, то не нужно ничего кодировать. Если же у тебя сначала образуется php-массив, то тогда функция json_encode нужна.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно передать массив из php в JS tuezov52 AJAX и COMET 2 07.11.2011 00:08
Как получить значение php переменной sanyalex AJAX и COMET 1 30.10.2011 22:45
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Работа 6 06.09.2010 16:16
Как добавить элемент в XML через DOM используя PHP? bayah Серверные языки и технологии 6 11.08.2010 13:33
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30