以下不是我的实际项目,而是一个与我的项目具有相同问题的示例。
以下是主要的HTML网页摘要:
<div id="divExample">Before</div>
<script type="text/javascript">
loadExample();
</script>
这是javascript文件摘要:
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById('divExample').innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","mypanel.html",true);
xmlhttp.setRequestHeader("If-Modified-Since", "Sun, 31 Dec 1899 23:59:59 GMT");
xmlhttp.send();
这是获取的mypanel.html:
After
<script type="text/javascript">
alert("Fetched script is working.");
</script>
当我加载主HTML页面时,AJAX javascript运行正常。它获取mypanel.html并将其内容放在divExample.innerHTML中。单词“After”正确显示而不是“Before”。
但是,具有警报的脚本永远不会执行。我不想将警报脚本与mypanel.html分开。在AJAX加载后如何让它执行的任何想法?
我已阅读here这可以做到。
我已经阅读here,这是无法做到的。
任何想法如何实现?
答案 0 :(得分:4)
您可能需要注意防止任意代码被运行,但这些内容可以起作用:
...
if(xmlhttp.readyState==4 && xmlhttp.status==200)
{
var myDiv = document.getElementById('divExample');
myDiv.innerHTML = xmlhttp.responseText;
var myScripts = myDiv.getElementsByTagName("script");
if (myScripts.length > 0) {
eval(myScripts[0].innerHTML);
}
}
...
答案 1 :(得分:0)
对于仍然无法弄清楚的人,
1-检查您的xmlhttp
是否包含response
密钥。
2-如果存在,则使用xmlhttp.response
代替xmlhttp.responseText
;
**如果php是您的后端服务器,请print_r(javascrip_code_as_string);
然后return;