[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: eval()
print_f
Здравствуйте.
ajax-сом отсылаю на сервер запрос и получаю в xmlHttpRequest.responseText стринг "['Mercedes' : 1]" .
Далее сей стринг обрабатываю подомдным образом:

var ans = eval(xmlHttpRequest.responseText);

По идее, желаю получить ассоциативный массив с ключём "Мercedes" и значением "1", но фаербаг ругается, говорит что missing ] after element list
В чём может заключаться проблема?



Спустя 9 минут, 32 секунды (28.08.2010 - 23:53) vasa_c написал(а):
Потому что {}, а не [].

Спустя 5 минут (28.08.2010 - 23:58) print_f написал(а):
тогда фаербаг кричит что invalid label

Спустя 24 минуты, 57 секунд (29.08.2010 - 00:23) vasa_c написал(а):
потому что "{'Mercedes' : 1}" отдельно от всего, это конструкция языка.

сделайте что-нибудь типа:
eval("var ans = " + xmlHttpRequest.responseText);

или по другому извернитесь.

Спустя 34 минуты, 28 секунд (29.08.2010 - 00:57) print_f написал(а):
В таком случае, в алерте получаю [objectObject]. Пробовал разные варианты, изгалялся как мог, но безрезультатно, пошёл курить мануалы.

Спустя 20 минут, 34 секунды (29.08.2010 - 01:18) Rivalryzerg написал(а):
print_f, [objectObject] и есть ваш массив. Попробуйте alert(ans['Mercedes']);

Вопрос не по теме: а почему не используете js-фреймворки, например jquery? Очень удобно работать с ajax-ответами в виде массивов.

Спустя 10 минут, 51 секунда (29.08.2010 - 01:29) print_f написал(а):
Вот балбес! Спасибо.
А по поводу jquery, я эту тему только начал изучать, ещё не углубился в принципы работы с аяксом. Может быть посоветуете известные вам плагины, для ознакомления?

Спустя 21 минута, 6 секунд (29.08.2010 - 01:50) Rivalryzerg написал(а):
Плагины не нужны. Посмотрите саму библиотеку: селекторы, ajax, события. Очень удобно и просто по сравнению с обычным яваскриптом, но главное - все кроссбраузерно.

Например вот простейший ajax-post запрос с использованием jquery:
$.post('/admin/edit.php', {'id': '123'}, function(reply) {});

В переменной reply ответ от сервера, в виде текста.
Но если мы добавим одну опцию в конце:
$.post('/admin/edit.php', {'id': '123'}, function(reply) {}, 'json');

и на серверной стороне отправим массив:
$data = array(
'Mercedes' => 'Cool car',
);

echo json_encode($data);

То сразу можно работать с reply как с массивом:
function(reply) {
alert(reply.Mercedes);
}


Пример простой, без проверок на ошибки, но хотел лишь показать как просто и удобно с этим работать, используя jquery.

Спустя 14 минут, 16 секунд (29.08.2010 - 02:04) print_f написал(а):
Спасибо большое. Сейчас уже в голову ничего не лезет, но завтра обязательно вникну. На вид, действительно просто.


_____________
Быдлоскрипт — это скрипт, сделанный быдлокодером «с душою», либо злым кодером с жуткими умыслами.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.