Что эквивалентно выполнению этого вызова eval('('+responseText+')') в jQuery? Я также понимаю, что eval не так уж безопасен, поэтому я ищу что-то более безопасное и идиоматическое в jQuery.
eval('('+responseText+')')
eval
Вы действительно хотите выполнить код Javascript (который всегда будет в некоторой степени небезопасным) или пытаетесь проанализировать JSON из строки в объект?
Если первое, eval () по-прежнему будет вашим лучшим выбором.
Если последнее, jQuery сделает это за вас как часть запроса AJAX, или вы можете использовать выделенный плагин JSON для преобразования между строкой и объектом без риск выполнения произвольного кода.
а) Чтобы загрузить и выполнить код JS:
$.getScript( url, [ success(data, textStatus) ] )
см. http://api.jquery.com/jQuery.getScript/
б) Для разбора JSON:
$.parseJSON( json )
см. http://api.jquery.com/jQuery.parseJSON/
Я не думаю, что это правда, что нет никаких различий в браузере. Я только что столкнулся с одним сегодня. Если вы оцениваете строку, которая вызывает метод для несуществующего объекта, Firefox возвращает undefined, а IE6 генерирует ошибку TypeError.
По своему замыслу jQuery стремится улучшить реализацию браузера. Поскольку нет проблем с тем, как различные браузеры реализуют eval, jQuery не решает эту проблему.
$.globalEval() * * 1002
$.globalEval()
http://api.jquery.com/jQuery.globalEval/
Документация говорит, что он ведет себя совсем не так, как eval(), но он наиболее близок, если вы хотите передать evals через jQuery.
eval()