(反问)

今天,我遇到了一个奇怪的情况,我想让PHP更新JavaScript的运行方式。这很烦人,这是我尝试过的...

/*
 * ajax-php-javascript-function-loader.php
 *
 * this gets called by AJAX and defines or re-defines the
 * definition of dynamicDoStuff()
 */
 <script type="text/javascript">
     function dynamicDoStuff(a,b){
          <?php
          //dynamically defined function behavior
          ?>
     }
 </script>


这不起作用,因为在加载新的javascript时,新功能定义的范围仅限于新的脚本标签。页面其他位置的脚本无法读取。

这就是您要做的。

/*
 * index.html
 */
 <html>
     <head>
        <script type="text/javascript">
           var dynamicDoStuff;
        </script>
        <!-- Other Head Stuff -->
     </head>
     <body>
         <!-- the body of the site -->
     </body>
 </html>




/*
 * axax-php-javascript-function-loader.php
 */
 <script type="text/javascript">
     dynamicDoStuff = function(a,b){
         <?php
         //dynamically define function behavior
         ?>
     }
 </script>


通过在标头中定义函数的名称,该函数的名称变得可以全局访问,因此您可以使用ajax和(php或其他任何函数)动态地重新调整其用途

最佳答案

不只是

function newFunctionViaAjax() { ... }


你可以改用

window['newFunctionViaAjax'] = function newFunctionViaAjax() { ... };

09-10 11:17
查看更多