Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2013, 17:47
Аватар для Daiver
Интересующийся
Отправить личное сообщение для Daiver Посмотреть профиль Найти все сообщения от Daiver
 
Регистрация: 12.05.2013
Сообщений: 14

Передача смешанного массива из php в js
Запрос на сервер посылается через xmlhttp объект.
Принимает ответ в xmlhttp.responseText
Как можно получить ответ в виде массива, а не строки.
Передаваемый массив содержит как строки так и числа.
Все строки закодированы в utf-8 и при передаче с использованием json получается что-то следующее:
"class_name":"\u041a\u0430\u0442\u0435\u0433\u043e \u0440\u0438\u044f \u0441 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u 0441\u043a\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u 043c"
Как это все превратить в чиабельную строку?
Числовые данные приходят в нормальном виде, но как с ними потом работать?
Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 29.05.2013, 18:19
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

alert("\u041a\u0430\u0442\u0435\u0433\u043e \u0440\u0438\u044f \u0441\u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c")


там пробелов пару лишних, но в принципе это нормальный текст
Ответить с цитированием
  #3 (permalink)  
Старый 29.05.2013, 18:33
Аватар для Daiver
Интересующийся
Отправить личное сообщение для Daiver Посмотреть профиль Найти все сообщения от Daiver
 
Регистрация: 12.05.2013
Сообщений: 14

Сообщение от animhotep Посмотреть сообщение
там пробелов пару лишних, но в принципе это нормальный текст
Понятно. Дстаточно просто вывести содержимое на страницу и все отобразится как надо.
А как получать доступ к значениям?
var result = xmlhttp.responseText;
alert(result.class_name); // Не работает
alert(result["class_name"]); // Не работает
alert(result[class_name]); // Не работает

Во всех трех случаях получаю undefined.
Ответить с цитированием
  #4 (permalink)  
Старый 29.05.2013, 18:44
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

может там нет ничего)
попробуйте вывести в консоль всю переменную
console.log(result)
Ответить с цитированием
  #5 (permalink)  
Старый 29.05.2013, 18:52
Аватар для Daiver
Интересующийся
Отправить личное сообщение для Daiver Посмотреть профиль Найти все сообщения от Daiver
 
Регистрация: 12.05.2013
Сообщений: 14

alert(result);

Выдает результат:
{"class_id":"5","class_name":"\u041a\u0430\u0442\u 0435\u0433\u043e\u0440\u0438\u044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u 044f \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u 044f \u043c\u043e\u0442\u043e\u0446\u0438\u043a\u043b\u 044b","class_name_short":"\u041c\u043e\u0442\u043e \u0446\u0438\u043a\u043b\u0438\u0441\u0442\u044b", "visible":"1","amount_tickets":"100"}

И как мне из этого счастья отдельные значения выуживать?
Ответить с цитированием
  #6 (permalink)  
Старый 29.05.2013, 18:54
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

var result={"class_id":"5","class_name":"\u041a\u0430\u0442", "visible":"1","amount_tickets":"100"}

alert(result.class_name);


вроде как нормально всё

попробуйте это ещё http://api.jquery.com/jQuery.parseJSON/
Ответить с цитированием
  #7 (permalink)  
Старый 29.05.2013, 19:03
Аватар для Daiver
Интересующийся
Отправить личное сообщение для Daiver Посмотреть профиль Найти все сообщения от Daiver
 
Регистрация: 12.05.2013
Сообщений: 14

Так у меня же
var result = xmlhttp.responseText;

а не
var result = {"class_id":"5","class_name":"\u041a\u0430\u0442", "visible":"1","amount_tickets":"100"}

Видимо где-то загвоздка в том, что все это дело с сервера приходит.
Код на сервере:
echo(json_encode($row));

$row является ассоциативным php массивом с результатаим выборки из БД.
Ответить с цитированием
  #8 (permalink)  
Старый 29.05.2013, 19:19
Аватар для Daiver
Интересующийся
Отправить личное сообщение для Daiver Посмотреть профиль Найти все сообщения от Daiver
 
Регистрация: 12.05.2013
Сообщений: 14

Может быть проблема в том, что в php и в js utf-8 символы занимают разное количество байт и поэтому js не видит это все как массив?
Тогда как передавать, чтобы все сработало?
Ответить с цитированием
  #9 (permalink)  
Старый 29.05.2013, 21:09
Аватар для Daiver
Интересующийся
Отправить личное сообщение для Daiver Посмотреть профиль Найти все сообщения от Daiver
 
Регистрация: 12.05.2013
Сообщений: 14

Сообщение от animhotep Посмотреть сообщение
[JS run]
попробуйте это ещё http://api.jquery.com/jQuery.parseJSON/
Это jquery. А без этого не судьба решить проблему?
Конечно если нет другого пути, то прийдется разобраться с jquery, но желательно найти решение без него. Может даже как-то по другому, не через json.
Ответить с цитированием
  #10 (permalink)  
Старый 29.05.2013, 23:11
Профессор
Отправить личное сообщение для oneguy Посмотреть профиль Найти все сообщения от oneguy
 
Регистрация: 31.05.2012
Сообщений: 396

Сообщение от Daiver Посмотреть сообщение
Понятно. Дстаточно просто вывести содержимое на страницу и все отобразится как надо.
А как получать доступ к значениям?
var result = xmlhttp.responseText;
alert(result.class_name); // Не работает
alert(result["class_name"]); // Не работает
alert(result[class_name]); // Не работает

Во всех трех случаях получаю undefined.
Вы забыли использовать JSON.parse для декодировки JSON на клиенте.
var result = JSON.parse(xmlhttp.responseText);
alert(result.class_name); // должно работать
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача массива из JS в PHP biohan AJAX и COMET 4 15.11.2012 18:24
Передача данных из JS в PHP - что не так? Rokugan Общие вопросы Javascript 16 30.09.2011 18:52
Передача массива из PHP Ajxom simple AJAX и COMET 26 11.04.2011 15:01
Передача переменной из JS в PHP методом ajax skalka jQuery 7 28.08.2010 12:05
Передача массива JS в cookies Denis Общие вопросы Javascript 1 04.08.2009 12:24