【问题标题】:Why would PHP-generated Javascript not work in file loaded via AJAX?为什么 PHP 生成的 Javascript 在通过 AJAX 加载的文件中不起作用?
【发布时间】:2011-05-19 02:53:52
【问题描述】:

我正在通过这样的 ExtJS AJAX 调用加载.php 文件:

menuItemApplication.header.on('click', function() {             
    Ext.Ajax.request({
        url: 'content/view_application.php',
        success: function(objServerResponse) {
            var responseText = objServerResponse.responseText;
            regionContent.update(responseText);
            var scripts, scriptsFinder=/<script[^>]*>([\s\S]+)<\/script>/gi;
            while(scripts=scriptsFinder.exec(responseText)) {
                eval(scripts[1]);
            }
        }
    });
});

加载的 .php 文件中的 Javascript 执行良好:

<script type="text/javascript">
     regionContent.update('changed region content from within application view');
</script>

但如果 Javascript 是通过 PHP 生成的,则它不会执行

<?php
echo "<script type=\"text/javascript\">\n";
echo "regionContent.update('changed region content from within application view')';\n";
echo "</script>\n";
?>

是的,响应是相同的,如在 Firebug Net 面板中所见,此处使用 有效的 Javascript

这里使用 PHP 生成的 Javascript,不起作用

如何让 PHP 生成的 Javascript 执行?

【问题讨论】:

    标签: php javascript ajax extjs


    【解决方案1】:

    这些反应不一样。检查 ';相对 ;到最后。

    <?php
    echo "<script type=\"text/javascript\">\n";
    echo "regionContent.update('changed region content from within application view')';\n";
    echo "</script>\n";
    ?>
    

    对比

    <?php
    echo "<script type=\"text/javascript\">\n";
    echo "regionContent.update('changed region content from within application view');\n";
    echo "</script>\n";
    ?>
    

    【讨论】:

    • 这是一个很容易犯的错误。我很惊讶错误控制台没有让你知道发生了什么。
    【解决方案2】:

    您的 PHP 代码中有一个额外的引号,导致 Javascript 中的引号无法正常工作;而不是:

    echo "regionContent.update('changed region content from within application view')';\n";
    

    你需要:

    echo "regionContent.update('changed region content from within application view');\n";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      • 1970-01-01
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      相关资源
      最近更新 更多