从AJAX-HTML响应执行Javascript函数

从AJAX-HTML响应执行Javascript函数,ajax,xmlhttprequest,innerhtml,javascript,Ajax,Xmlhttprequest,Innerhtml,Javascript,我有一个显示评论的网页,用户可以单击“标志”链接报告不适当的评论 当他们单击标志链接时,我使用AJAX和innerHTML在评论下面显示一个下拉框,其中包含一个原因码,例如垃圾邮件、攻击性、与主题无关等,以及一个取消按钮 如果用户单击Submit,我希望使用另一个AJAX请求将其响应发送到PHP文件,在该文件中更新数据库,并在其端收到“谢谢”(无需重新加载页面)。我基本上希望使用另一个AJAX请求将显示下拉框的DIV替换为“谢谢” 这就是问题所在。似乎我无法从第一个AJAX请求的HTML响应中执

我有一个显示评论的网页,用户可以单击“标志”链接报告不适当的评论

当他们单击标志链接时,我使用AJAX和innerHTML在评论下面显示一个下拉框,其中包含一个原因码,例如垃圾邮件、攻击性、与主题无关等,以及一个取消按钮

如果用户单击Submit,我希望使用另一个AJAX请求将其响应发送到PHP文件,在该文件中更新数据库,并在其端收到“谢谢”(无需重新加载页面)。我基本上希望使用另一个AJAX请求将显示下拉框的DIV替换为“谢谢”

这就是问题所在。似乎我无法从第一个AJAX请求的HTML响应中执行AJAX请求。JavaScript函数失败——即使是一个简单的警报(“hello world”)也不起作用。我尝试将JavaScript函数放置在调用第一个AJAX请求的主页面中,并将其放置在PHP文件中,该文件显示为来自第一个AJAX请求的HTML响应,但我没有任何运气——这些函数在被调用时不会运行

如果我从外部加载PHP文件,一切都正常,因此我知道JavaScript是正确的。当我将PHP文件加载到HTML响应DIV中,然后从那里调用JavaScript时,它就不起作用了

总之,如何从AJAX请求的HTML响应执行JavaScript函数

编辑:以下是我想做的示例:

这是AJAX部分,当用户单击Flag链接时,它会填充DIV:

xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4)
{
     document.getElementById(whichdiv).innerHTML=xmlhttp.responseText;
}
};
xmlhttp.responseText的值来自此外部文件:

<input type="hidden"/>
<script type="text/javascript" language="javascript">
function displayalert()
{
    alert ('Hello World!');
}
</script>

<form name="myform" id="myform">
<input type="text" name="myfield" value="teststring"/><br/>
<input type="button" name="button" value="Submit" 
   onclick="displayalert();"/>
</form>

函数displayalert()
{
警惕(“你好,世界!”);
}

注意:上面的
来自我在网站上找到的一个建议

当用户单击该按钮时,javascript displayalert()函数不会运行。警报框永远不会弹出。如果我从外部加载该文件,而不是使用innerHTML调用它,则脚本工作正常

xmlhttp.responseText是否可以包含JavaScript代码?

取决于浏览器: IE不支持使用ajax加载的html脚本,这意味着如果html中有脚本块,就不会调用它们

Firefox支持脚本评估

我通常会在输入中插入一些json,然后检查浏览器是否支持scriptEval,如果不支持,则提取json,对其进行评估,并调用一些传递json的方法

如果浏览器支持scriptEval,我还包括一个脚本块,其中包含对使用json的相同方法的调用

您可能还想阅读以下内容:

尝试发布不起作用的代码。很难说你想做什么。谢谢。我用上面的代码更新了我原来的帖子。谢谢你的反馈。通过在主PHP文件中包含JavaScript函数,而不是在返回的AJAX代码中包含JavaScript函数,我能够实现这一点。然后,我可以从返回的AJAX代码中调用该函数。