Перефразируя Иана Малкольма, это не так много, как вы можете , так и то, должны ли вы .
Есть два способа выполнить полученный кодот сервера, и это обычно зависит от того, откуда этот код.
Javascript имеет функцию под названием eval()
, которая принимает строку и выполняет ее как Javascript.Основная проблема заключается в том, когда вы не можете быть уверены, что содержит эта строка.В мире интернет-безопасности большинство людей утверждают, что вы можете никогда не быть уверенным во входящих данных, и поэтому вам следует никогда использовать eval
для входящих данных.
Другой метод - JSONP .Этот метод позволяет вам получать данные из удаленных источников.Это делается путем генерации тега <SCRIPT>
, который извлекает удаленный Javascript.Ваш вызов источника JSONP обычно включает функцию обратного вызова, которая вызывается при получении данных JSONP, предоставляя доступ к локальному коду.
Не зная точно, чего вы хотите достичь, я не хочуЧтобы сделать какие-либо предположения, но позвольте мне сделать некоторые предложения.
Вызов кода по требованию с сервера может немного тяжелым.Я не могу думать о многих (читай - any ) сценариях, в которых вызов на заказ функций с сервера будет лучшим подходом.Однако я могу представить сценарий, в котором у вас есть большой набор потенциальных функций, которые вы, возможно, захотите выполнить, и вы не хотите загружать их все в браузер одновременно.Я бы предложил два подхода:
- Выполнить функции на сервере.Просто отправьте вам данные на сервер в каком-либо формате, и они вернут набор результатов.Оставьте обработку на сервере
- Если вам нужна функция, которой в данный момент нет в браузере, загрузите файл сценария, содержащий эту функцию, а затем вызовите функцию в своем Javascript.Думайте об этих файлах как о динамически загружаемых библиотеках, к которым вы обращаетесь по мере необходимости.Вы ограничены своим собственным сервером, используя этот метод, который повышает безопасность (если вы уверены, что ваш собственный сервер не будет отправлять вредоносный код.
Короче, я бы сказал, что дизайнэто требует, чтобы вы немедленно взяли текст с сервера и выполнили его, так как код может указывать на проблему в этом проекте. Но вы не пришли сюда для проверки проекта, так что, надеюсь, эти предложения помогут вам найти хороший подход.