(反问)
今天,我遇到了一个奇怪的情况,我想让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() { ... };