执行脚本 AJAX returns

Execute scripts AJAX returns

提示:"you could simple send an json object / array from php to js, and execute every entry like "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>

当我在 index.php 的底部生成这些脚本的 PHP 代码时,所有 js 函数都被正确调用。由于这个 ,我不得不将代码移动到另一个 .php 文件。

您可以将结果附加到您的页面:

$.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);
});

但还有一个 shorthand method:

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

});

请阅读文档,有一些注意事项!

这样做:

在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);
    })
});