![](/img/trans.png)
[英]Why doesn't this function load after a successful ajax call in jquery?
[英]Javascript doesn't load after AJAX call
好的,我加载页面时会解析以下HTML代码:
<div id="clip-wrapper">
<script type="text/javascript">
alert("bla");
</script>
</div>
这显然导致一个警告说“bla”,在我的AJAX调用之后,解析的HTML代码如下所示:
<div id="clip-wrapper">
<script type="text/javascript">
alert("ajaxbla");
</script>
</div>
另一方面,这不会导致警报。 为什么? 我该如何解决这个问题?
如果从Ajax调用中将任何脚本加载到您的dom中,则出于安全原因不会执行它们。
要使脚本执行,您需要将其从响应中删除,然后通过eval
运行它
但理想情况下,您需要将脚本作为ajax请求完成时的回调运行。 如果您正在使用jQuery,那么这将是您的ajax调用的成功事件,如果您在本地执行它,那么它将是您的xhr对象的readyStateChange事件。
编辑
如果你真的想选择eval选项,你可以试试这样的:
document.getElementById(contentDiv).innerHTML = xmlHttp.responseText;
eval(document.getElementById("clip-wrapper").innerHTML);
把代码放进去
$(document).ready(function()
{
alert(msg);
});
或者使用XMLHttp对象的readysatchange事件。
XMLHttpobject.readyStateChange( furnction() { alert('msg'); } );
编辑
如果你使用jquery而不是去
$.ajax({
url: "test.html",
context: document.body,
success: function(){
$(this).addClass("done");
}
});
在sucess事件中,您可以编写代码,一旦完成ajax就会执行。
script
标记之间的正文中的任何代码仅在加载文档时执行。
在ajax调用中,使用callback
或success:
或oncomplete:
如果你正在使用jQuery来处理ajax响应。
你的意思是第二个HTML代码作为ajax响应? 你有没有把html插入当前页面?
就像是,
document.body.innerHTML = ajax_response;
但即使使用innerHTML
替换,我也不会自动执行其中的script
。 浏览器将解析script
但不会自动执行它。 (例如,如果你在html中有一个function
定义,在ajax调用之后你就可以调用那些函数)
另一种选择是使用document.write
,它将用新的html替换整个页面内容,其中的script
标签将自动执行。
document.write(ajax_response);
希望这可以帮助,
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.