【问题标题】:Execute scripts AJAX returns执行脚本 AJAX 返回
【发布时间】:2015-12-09 20:39:06
【问题描述】:

提示:“您可以简单地从 php 向 js 发送一个 json 对象/数组,并使用 eval() 函数执行每个条目,如“update_match('1');”,请停止以这种方式发送 js 代码“-卢西安·德波德。


在 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 函数都被正确调用了。由于这个question,我不得不将代码移动到另一个 .php 文件。

【问题讨论】:

  • 你想让通过ajax返回的js代码运行吗?
  • 是的@Dagon,但我想我得到了答案。
  • 一切都好,只是需要澄清
  • 你是否通过 ajax 发送所有那些“
  • 你可以简单地从 php 向 js 发送一个 json 对象/数组,然后执行每个条目,如“update_match('1');”使用 eval() 函数,请停止发送 js 代码

标签: javascript php ajax return alert


【解决方案1】:

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

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

代码将被执行,但我不确定这样做是否安全。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 谢谢! +1 速记方法。
    【解决方案3】:

    这样做:

    在 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调用中指定是JSON格式的?
    • 你发给php的数据,还是从php发给js的?
    • 您可以将第四个参数指定为 JSON,但 jquery 采用“智能猜测”(api.jquery.com/jquery.post)。我认为它应该在没有的情况下工作。
    • 我使用它:$.post('php/main.php', {elements: 1}, function(return_json) { //console.log(return_json); return_json = JSON.parse(return_json); return_json.calls.forEach(function(code){ eval(code); }) });
    • 也许第四个参数也可以解决问题,将其设置为“JSON”...
    猜你喜欢
    • 2020-01-25
    • 2023-03-24
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 2010-11-01
    • 2016-01-11
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多