Передача кода JavaScript в формате JSON - PullRequest
2 голосов
/ 06 февраля 2010

Я делаю AJAX-вызов с jQuery для сценария PHP, который должен возвращать код JavaScript, встроенный в результат JSON для выполнения кода jQuery. Как мне передать код JavaScript в JSON?

Ответы [ 2 ]

3 голосов
/ 06 февраля 2010

Два способа:

  1. Вам нужно будет передать его как строку и использовать eval() на стороне клиента.
  2. Вы можете использовать JSONP, и вместо того, чтобы делать вызов, ваш скрипт на стороне клиента вставит <script> с его src, указывающим на код на стороне сервера, который возвращает новый скрипт.

В любом случае убедитесь, что вы надежно его закрепили - если пользователь может каким-то образом вставить свой собственный код в ваш ответ, он может нанести некоторый ущерб.

0 голосов
/ 06 февраля 2010

Определение JSON не позволяет переносить функции javascript. Он должен быть независимым от языка. Если вы используете синтаксический анализатор JSON вместо eval (), произойдет сбой, если JSON содержит какие-либо функции.

Дуглас Крокфорд, который, как мне кажется, придумал термин JSON , имеет JSON-анализатор для javascript

Даже JSONP возвращает не функцию, а вызов функции - myFuncIAskedFor({ returned JSON })
Как уже упоминали другие, определяйте свои функции локально, это самая безопасная вещь, которую можно сделать
Также используйте анализатор JSON

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