开发者

Ajax triggering body's onLoad event

My whole page is loading again whenever I make a ajax call to load a div. I have noticed that 'body onload=init()' onload event is getting triggered on ajax response and all the initialization is happening again. I don't want that to happen. Is there a way by which only div is loaded through ajax call.

<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);
}


It is not ajax that is triggering onLoad event of body. If you see the anchor tag, I haven't assigned any value to href="" which was causing the page to be loaded again. Removing it solved the problem.


We'd need to see your code to help, but when pages do things like reloading etc, it usually means their is a script error. Use firebug to check for errors, it might be hard to catch if it's refreshing quickly.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜