如何从 Ajax 响应中执行主窗口中定义的 Javascript 函数

How to execute Javascript function defined in main window from within Ajax response

本文关键字:窗口 定义 函数 Javascript 执行 Ajax 响应      更新时间:2023-09-26

我在主索引.html文件中定义了Javascript函数。
此页面的一部分使用 Ajax(带原型.js)进行更新。尝试从返回的 AJAX 代码中执行主文件中定义的 Javasript 函数失败。
evalScripts:Ajax.Updater 原型中的真选项.js函数没有帮助。
我该如何解决这个问题?提前谢谢你。

这是我的索引.html文件:

<html>
<head>
<script src="js/lib/prototype.js" type="text/javascript"></script>
<script type="text/javascript">
    function foo(x) {
        alert(x);
    }
    function loadContent() {
      new Ajax.Updater('responseArea', 'response.php' , { evalScripts: true } );
    }
</script>
</head>
<body>
    <div id="main">
        <span style="cursor: pointer" onclick="loadContent();">Click on me to call Ajax response</span><br>
        <br></br>
    </div>
    <div id="responseArea">
        This will be replaced with Ajax response
    </div>
</body>
</html>

This is response.php:
  <?php
         echo '<span style="cursor: pointer" onclick="foo("foo Called from within Ajax response");">
             Click on me to call foo from within Ajax response</span>';
   ?>

由于evalScriptstrue,您可以将任何 JS 代码段放入响应中,它将在 AJAX 调用完成时执行:

<script type="text/javascript">
foo("foo Called from within Ajax response");
</script>

如果你不想执行,而只是想包含更多的 JS,你可以插入一个常规的 JS include 标签:

<script type="text/javascript src="yournewcode.js"></script>

这比内联包含JS更好,因为它允许浏览器缓存文件。