СОВЕТ: «вы могли бы просто отправить 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-файл.
Сделайте это так:
В 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 });
Пожалуйста, прочитайте документы, есть некоторые предостережения!