我正在使用php,mysql,html5& css3和javascript(ajax)创建一个网页。
为了提高性能,我决定使用AJAX只获取实际更改的内容div(<div id="content">
),我不想一直重新加载整个代码。其工作原理如下:在从php文件中收到新内容后,javascript会执行以下操作:
document.getElementById("content").innerHTML = new_content;
之后,new_content
显示得很好......
现在问题:
在new_content
中,我也有一些javascript,例如:
<script type="text/javascript" lang="JAVASCRIPT">
alert('Hello!');
...
</script>
不幸的是,当它插入div时,它根本不执行...
当“自然地”调用php文件时,javascript代码执行我想要它做的事情,所以没有错误。
提前致谢
编辑:问题解决了,我包括jquery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js">
</script>
并在javascript中使用$("#content").html(new_content);
,如下所述。
答案 0 :(得分:2)
使用jQuery的$.html
。它会自动为您执行脚本。
$("#content").html(new_content);
答案 1 :(得分:1)
实际上,默认情况下,在替换HTML时禁用脚本执行 - 如果你看一下就有意义。你应该考虑使用像jQuery或Mootools这样的库来抽象出这样的问题。
如果你看看Mootools&#39; Request.HTML
实现您将看到它的evalScripts
选项默认为true,稍后在调用期间会导致执行此代码:
response.html = text.stripScripts(function(script){
response.javascript = script;
});
...
if (options.evalScripts) Browser.exec(response.javascript);
然而,如果没有Mootools&#39;这可能不会自行完成。其他一些浏览器抽象代码到位,所以是的我绝对建议在你的项目中包含一个库。