使用ajax加载时为什么警报功能不起作用

时间:2012-04-14 13:38:28

标签: javascript ajax

我有一个页面index.html

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>Lufia</title>
 <script language="javascript" type="text/javascript">
 function ajax()
 {

var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {if (xmlhttp.readyState==4 && xmlhttp.status==200)
   document.getElementById('mydiv').innerHTML=xmlhttp.responseText;
  }
  xmlhttp.open("GET",'welcome.html',true);
xmlhttp.send();
 }
 </script></head>
<body>


<button onclick="ajax();"></button><div id="mydiv"></div></body>
</html>

另一个名为welcome.html的页面

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
 <title>Lufia</title>

<body onload="alert('ank');">welcome
</body>
</html>

我希望它在welcome.html通过ajax加载时提醒ank,因为alert函数写在welcome.html的body onload属性上

1 个答案:

答案 0 :(得分:0)

对于初学者,您尝试插入的HTML无效。它不仅格式错误(没有根元素,没有头部,标题在头部之外),而且它不是文档片段(这是人们通过AJAX加载HTML时返回的大多数)。

因此浏览器尽其所能,其中包括删除新的<body>代码。由于它被删除,事件显然无法触发。

为什么你这样做呢?您已经拥有相当于onload的内容 - 您甚至可以使用它将HTML放在<div>中。只是做那里的东西。

旁注:如果您认为通过<script>添加innerHTML会有效,请参考以下建议:不会。