Javascript在AJAX调用后不会加载
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调用的success事件,如果您使用本机,则将是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");
}
});
这里在success事件你可以写你的代码得到执行,一旦你完成了ajax
在script
标签之间的代码将只在加载文档时执行。
在ajax调用,使用callback
或success:
或oncomplete:
来处理ajax响应,如果你使用jQuery
你的意思是第二个html代码是作为ajax响应??你把html插入到当前页面了吗?
,
document.body.innerHTML = ajax_response;
但即使更换innerHTML
,我不认为script
里面会自动执行。浏览器将解析script
,但不会自动执行它。(例如,如果你在html中有一个function
定义,在ajax调用之后,你将能够调用这些函数)
另一个选择是使用document.write
,它将用新的html替换整个页面内容,其中的script
标签将自动执行。
document.write(ajax_response);
希望有帮助,
相关文章:
- 在调用speak之前预加载Web Speech API
- BrowserId登录请求在文档加载时被调用
- 页面加载后的Ajax调用
- 当库在页脚中加载时,基于PHP条件调用Javascript
- 为什么我的ajax在提交用@HtmlRenderPartial加载的表单时只调用fire一次
- 使用多个依赖项加载只进行一次AJAX调用
- 如何重新加载调用部分视图的操作
- 也需要为“加载”调用脚本,而不仅仅是在“模糊”上
- 加载调用仅适用于第一个节点,不适用于叶
- 如何在不加载调用的页面的情况下调用 URL
- 页面加载调用函数上的 Angularjs
- 页面加载调用后的谷歌地图api
- Jquery加载不回答通过加载调用
- Jquery加载调用结果为空查询字符串
- ASP.Net增量页面加载调用Javascript
- 我如何从页面加载调用ajax单击事件
- 在HTML中加载/调用javascript的适当位置
- 如何停止Ajax映像加载调用新函数
- 页面加载调用javascript函数
- JSF中的页面加载调用命令按钮