2011-03-24 80 views
1

无论何时我使用ajax调用来加载div,我的整个页面都会再次加载。 我已经注意到'body onload = init()'onload事件正在触发ajax响应,并且所有的初始化都再次发生。我不希望这种情况发生。 有没有一种方法,只有div通过ajax调用加载。Ajax触发机构的onLoad事件

<body onload="init()"> 
..... 
..... 
<div>...<a href="" onclick="saveView('more')"><b>More</b></a></div> 
</body> 

main.js

function saveView(arg){ 
    if(arg=="more"){ 
      ajaxGet(baseRef+"all.html", loadList); 

    }else{ 
      ajaxGet(baseRef+"all-A.html", loadList); 

    } 
function init(){ 
..... 
} 

function ajaxGet(url, responseHandler) 
{ 
    var page_request = false; 

    if (window.XMLHttpRequest && !(window.ActiveXObject && window.location.protocol == "file:")) { 
       // use this only if available, and not using IE on a local filesystem 
     page_request = new XMLHttpRequest(); 
     } 
    else if (window.ActiveXObject) { // older versions of IE, or IE on a local filesystem 
     try { 
      page_request = new ActiveXObject("Msxml2.XMLHTTP"); 
     } 
     catch (e){ 
      try{ 
       page_request = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch (e){ 
      } 
     } 
    } 
    else { 
     alert("Your browser does not support XMLHTTP."); 
     return false; 
    } 


    page_request.onreadystatechange=function() { 
     if(page_request.readyState==4) { 
         // on local machines the status for success is 0. on web servers it is 200 
      if(page_request.status==200 || page_request.status==0) { 
       responseHandler(page_request); 
      } 
     } 
    } 

    page_request.open('GET', url, true); 
    page_request.send(null); 
} 

function loadList(page_request){ 
    document.getElementById("list").innerHTML=page_request.responseText; 
    Loaded = true;  
    try{ 
     if(pLoaded) 
      doFilterStateChange1(); 
     }catch(e) 
     { 
     } 
    setTimeout("restoreScrollTop()", 1000); 
} 
+1

请提供更多详细信息,例如您使用的HTML和JS代码。 – Thorben 2011-03-24 11:15:41

回答

1

触发onLoad事件的不是ajax。 如果您看到锚标签,我没有为href =“”分配任何值,导致页面再次被加载。删除它解决了这个问题。

+0

如果href属性从定位标记中移除,则当光标悬停在其上时,手形光标不会显示。解决方案是保持href并赋值#即hre​​f =“#” – Mady 2011-03-25 06:30:20

0

我们就需要看你的代码,以帮助,但是当页面做的事情一样重装等,这通常意味着他们是一个脚本错误。使用萤火虫检查错误,如果快速刷新,可能很难捕捉到。

+1

它应该是一个评论。 – Kangkan 2011-03-24 11:17:18