
01.02.2013, 01:51
|
Новичок на форуме
|
|
Регистрация: 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?
|
|

01.02.2013, 02:23
|
 |
Профессор
|
|
Регистрация: 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 событие)
|
|

01.02.2013, 03:00
|
Новичок на форуме
|
|
Регистрация: 19.07.2011
Сообщений: 9
|
|
Такой вариант я уже пробовал.
При
var array = JSON.parse(response);
У меня typeof(array) = string вместо нужного object
|
|

01.02.2013, 03:24
|
 |
Профессор
|
|
Регистрация: 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.
|
|

01.02.2013, 03:34
|
Новичок на форуме
|
|
Регистрация: 19.07.2011
Сообщений: 9
|
|
Все, получилось.
Спасибо, danik.js, большое.
Итоги:
В PHP не использовать json_encode.
На клиенте просто JSON.parse(response).
|
|

01.02.2013, 03:34
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
Ошибочка небольшая.
xhr.onload = function(e) {
var array = JSON.parse(this.responseText);
console.log(array);
}
|
|

01.02.2013, 03:37
|
 |
Профессор
|
|
Регистрация: 11.09.2010
Сообщений: 8,804
|
|
dima_tr, если исходный массив уже представлен ввиде JSON-строки, то не нужно ничего кодировать. Если же у тебя сначала образуется php-массив, то тогда функция json_encode нужна.
|
|
|
|