Что эквивалентно, но более идиоматично для eval () в jQuery? - PullRequest
3 голосов
/ 26 февраля 2009

Что эквивалентно выполнению этого вызова eval('('+responseText+')') в jQuery? Я также понимаю, что eval не так уж безопасен, поэтому я ищу что-то более безопасное и идиоматическое в jQuery.

Ответы [ 5 ]

6 голосов
/ 27 февраля 2009

Вы действительно хотите выполнить код Javascript (который всегда будет в некоторой степени небезопасным) или пытаетесь проанализировать JSON из строки в объект?

Если первое, eval () по-прежнему будет вашим лучшим выбором.

Если последнее, jQuery сделает это за вас как часть запроса AJAX, или вы можете использовать выделенный плагин JSON для преобразования между строкой и объектом без риск выполнения произвольного кода.

4 голосов
/ 29 декабря 2010

а) Чтобы загрузить и выполнить код JS:

$.getScript( url, [ success(data, textStatus) ] )

см. http://api.jquery.com/jQuery.getScript/

б) Для разбора JSON:

$.parseJSON( json )

см. http://api.jquery.com/jQuery.parseJSON/

2 голосов
/ 24 февраля 2010

Я не думаю, что это правда, что нет никаких различий в браузере. Я только что столкнулся с одним сегодня. Если вы оцениваете строку, которая вызывает метод для несуществующего объекта, Firefox возвращает undefined, а IE6 генерирует ошибку TypeError.

1 голос
/ 26 февраля 2009

По своему замыслу jQuery стремится улучшить реализацию браузера. Поскольку нет проблем с тем, как различные браузеры реализуют eval, jQuery не решает эту проблему.

0 голосов
/ 05 октября 2010

$.globalEval() * * 1002

http://api.jquery.com/jQuery.globalEval/

Документация говорит, что он ведет себя совсем не так, как eval(), но он наиболее близок, если вы хотите передать evals через jQuery.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...