我在主index.html文件中定义了Javascript函数。
使用Ajax(使用prototype.js)更新此页面的一部分。尝试从返回的AJAX代码中执行主文件中定义的Javasript函数失败。
evalScripts:Ajax.Updater中的true选项prototype.js函数没有帮助
我该如何解决?提前谢谢。
这是我的index.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>';
?>
答案 0 :(得分:0)
由于evalScripts
是true
,您可以在响应中放置任何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内联更好,因为它允许浏览器缓存文件。