Javascript在AJAX调用后不会加载

Javascript doesn't load after AJAX call

本文关键字:加载 调用 AJAX Javascript      更新时间:2023-09-26

加载页面时解析以下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调用,使用callbacksuccess: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);

希望有帮助,