![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| dix75 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 462 Регистрация: 17.7.2007 Репутация: нет Всего: 1 |
Доброй ночи!
Есть JSON такого вида.
Как сие чудо превратить в объект. jQuery.parseJSON не работает JSON.parse не работает eval зло Как быть. Изменить формат получаемого JSON невозможно. -------------------- save your mind |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
В чем зло?
Добавлено через 21 секунду Чем мой пример добрее eval'а ? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| dix75 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 462 Регистрация: 17.7.2007 Репутация: нет Всего: 1 |
ksnk,
Добрее тем, что у тебя область ограничена функцией, в отличие от eval, где область не ограничена функцией. Function, setInterval, setTimeout в данном случаи работаю одинаково. Я не хочу их использовать. -------------------- save your mind |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
ksnk, угу. невнимательность.
хотя, возникает вопрос: может, что-то не то со структурой данных? учитывая код jQuery.parseJSON:
не вижу причины, почему "new Function"-метод работает, а JSON.parse — нет. Разве что, ключи объекта без кавычек… |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Не! Давай точно определим доброту. Если злой умышленник отправит в ответ на запрос что-то вроде
Если кодер написал свои собственные функции и переменные - то они элегантно закрылись в функции и наружу уже не видны. А если именно это и нужно было? (хотя такое поведение и некрасиво..., но динамическая подгрузка нужных фенечек бывает полезна) Если в переменной нормальное изображение объекта, то сработают оба варианта (eval и function) без разницы. От какого зла защищаемся? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| 502 |
|
|||
![]() Я всегда прав ![]() Профиль Группа: Участник Сообщений: 134 Регистрация: 16.7.2011 Репутация: 1 Всего: 4 |
||||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Был какой-то период, когда json_encode не мог кодировать большие объемы данных и приходилось пользоваться фунцией php2js из Котеровских библиотек. eval или function от них давал вполне работоспособный объект без ошибок, а функция от jQuery - ломалась и ругалась. До меня только сейчас дошло почему мне пришлось переписывать json-логику P.S. Не. дело было не в этом . Ключи функцией возвращались строковыми... Это сообщение отредактировал(а) ksnk - 16.3.2012, 17:12 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
как давно это было? пытался запустить php2js онлайн, чтоб посмотреть, какой там вывод, но не вышло единственное соображение: если падал jQuery.parseJSON, но работало new Function, значит, ошибка была при запуске JSON.parse и, вероятней всего, дело в отсутствие кавычек в ожидаемых функцией местах |
|||
|
||||
| dix75 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 462 Регистрация: 17.7.2007 Репутация: нет Всего: 1 |
Я и не говорил, что Function защита от всего -------------------- save your mind |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
php 4, если ничего не путаю.
php2js (который у меня работал) использует одинарные кавычки. А jQuery желает только двойные. вот и причина. Ну да ладно, заодно я тогда решил проблему обработки таймаута в запросе, выдачи отладочного и ошибочного (когда валится сообщение об ошибке. а не json) ответа, так что все равно получилось удачно ;) Я просто пытаюсь сказать - что это защита практически ни от чего ;) в JS eval совсем не такой вредный и тормозной как в php, так что особых причин не пользоваться им когда удобно, я не нахожу... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
ну, я ж привел кусок кода jQuery только предоставляет фасад либо к JSON.parse, либо через new Function. кстати, да, JSON.parse в Firefox 11 ругается на {'a': 4} с другой стороны, php2js вполне себе принимает аргументом кавычку. а json_encode — нет, зато позволяет по-хитрому обрабатывать объекты, реализующие JsonSerializable и да, я понимаю, что для тебя это не актуально уже но, вдруг, кто-то будет в этой теме копаться и пригодится… |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |