Выполнять скрипты AJAX возвращает

СОВЕТ: «вы могли бы просто отправить json object / array из php в js и выполнить каждую запись, например« update_match ('1 »),« используя функцию eval (), остановите отправку js-кода именно так »- Lucian Depold.


В index.php у меня есть этот код, который выполняется, когда документ готов:

$.post('php/main.php', {elements: 1}, function(return_msg) { alert(return_msg); }); 

Ответ, который я получаю, представляет собой кучу сценариев, как и ожидалось, с ожидаемыми значениями. Однако они не исполняются! Как заставить их выполнить?

Вот ответ:

 <script>jsfunction(37069);</script><script>updateTextbox('');</script><script>update_match('1', '19.30 Friday 15/5', '1');</script><script>update_player('1', '1', 'recoba', 'cmf', 'teo', '0', '0');</script><script>update_player('1', '2', 'nesta', 'cb', 'tsoulou', '0', '0');</script><script>update_player('1', '3', 'raul', 'cf', 'striker', '0', '0');</script><script>update_player('1', '4', 'samuel', 'cb', 'mafia', '', '1');</script><script>update_player('1', '5', 'deisler', 'cmf', 'free_kick', '1', '');</script><script>update_player('1', '6', 'ferdinard', 'cb', 'strong', '1', '');</script><script>update_match('2', 'Match 2', '0');</script> 

Когда у меня был PHP-код, который создавал эти скрипты в нижней части index.php, все функции js, где вызывается правильно. Однако из-за этого вопроса мне пришлось переместить код в другой .php-файл.

Solutions Collecting From Web of "Выполнять скрипты AJAX возвращает"

Сделайте это так:

В PHP …

 $arrayOfCalls = array(); $arrayOfCalls[]="update_match('1')"; $arrayOfCalls[]="update_match('2')"; $dummy = array(); $dummy['calls'] =$arrayOfCalls; echo json_encode($dummy); 

И в Javascript …

 $.post('php/main.php', {elements: 1}, function(return_json) { return_json = JSON.parse(return_json); return_json.calls.forEach(function(code){ eval(code); }) }); 

Вы можете добавить результат на свою страницу:

 $.post('php/main.php', {elements: 1}, function(return_msg) { $('body').append(return_msg); }); 

Код будет выполнен, но я не уверен, безопасно ли это сделать.

Дата, поставленная вызовом AJAX, – это просто данные – или текст. Чтобы интерпретировать это как JavaScript, вы должны добавить его в dom.

Два способа: во-первых, путем непосредственного добавления данных:

 $.post('php/main.php', {elements: 1}, function(return_msg) { alert(return_msg); $('body').append(return_msg); }); 

но есть также сокращенный метод :

 $.getScript('php/main.php?elements=' + 1, function () { // script loaded }); 

Пожалуйста, прочитайте документы, есть некоторые предостережения!