JSON с сервака, замучала "missing ; before statement"
два варианта кода, в первом JSON задается в самом скрипте (для проверки корректности JSON), второй генерит с помощью php то же самое. Первый вариант работает, второй выдает ошибку "missing ; before statement".
1: if (xmlHttp.status == 200) { var data = "[{id: '501', fio: 'Агафонов Н.Г.'}, {id: '518', fio: 'Болобанова Т.В.'}]"; var resp = eval(data); for (i = 0; i <= resp.length-1; i++) p_object.options[i] = new Option(resp[i].fio, resp[i].id); } 2: if (xmlHttp.status == 200) { var data = xmlHttp.responseText; var resp = eval(data); for (i = 0; i <= resp.length-1; i++) p_object.options[i] = new Option(resp[i].fio, resp[i].id); } Пробовал добавлять в php скрипт строку header("Content-Type: application/json; charset=windows-1251");, добавлять круглые скобочки, точку с запятой в разные места - не помогает ЗЫ В принципе скрипт отрабатывает в FireFox и IE, но c ошибкой (текст ошибки получил с помощью FireBug) |
В первом случае у вас data это массив, во втором -- строка. Примеры не эквивалентны.
|
исправил (добавил кавычки), проверил, 1 вариант рабочий
|
Почему eval а не JSON.stringify ?
|
Ты имел ввиду JSON.parse? Ведь JSON.stringify - обратное преобразование.
Я так понял для этого надо подключать библиотеку, которая весит не меньше 2.5 килобайт. |
JSON.parse в FF тоже выдает ошибку, но работает, IE не знает что такое JONS
|
data = '(' + data + ')';Должно сработать. Если не работает - значит у Вас невалидный JSON. JSON есть нативно в новых браузерах, для остальных подключать библиотеку. |
Цитата:
Цитата:
Цитата:
var data = "[{'id': '501', 'fio': 'Агафонов Н.Г.'}, {'id': '518', 'fio': 'Болобанова Т.В.'}]"; |
Со скобками работает, но выдает другую ошибку "missing ) in parenthetical". JSON точно валидный, потому что в php я тупо скопировал строку из первого примера.
Возможно что-то в настройках Апача кроется, или в php-ответе надо хедер какой-нибудь задать... ЗЫ Apache/2.2.10 (Win32) |
Цитата:
|
Часовой пояс GMT +3, время: 03:44. |