以下不是我的实际项目,而是一个与我的项目具有相同问题的示例。JavaScript未在Ajax响应文本中执行
这里的主要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,这不能做。
任何想法如何使它发生?
有你存储与响应警报的理由?您最好将它放在响应处理程序中的行后面。响应实际上并未按照您编码的方式进行评估/执行。如果你运行一个eval();在响应中它将运行(没有脚本标记,并且您可能需要在响应中包括类似下面的内容:var reponseHtml ='After';并在innerHtml代码中使用它)。祝你好运。 – 2011-05-12 22:38:45
那么,真正的代码不是一个警报。这只是我实际项目遇到的问题的一个例子。实际的代码做了各种操作,我希望它保持与HTML。但是你的想法是值得一试的。也许我可以将脚本解析出来,然后评估它。这是一个有趣的方法。我会检查出来的。谢谢! – 2011-05-13 14:14:23