日期:2014-05-20  浏览次数:20416 次

XMLHttpRequest异步请求后造成页面重新加载的问题
如题,用firebug调式,发现XMLHttpRequest请求能正常反回,但反回后页面就重新加载了,造成异步请求的内容丢失,又回到页面初始状态。代码如下:
前台HTML调用:

HTML code

<li><a id="basicInfo" href="" onclick="navjax(this)">基本资料</a></li>



JS:

JScript code

    function navjax(obj) {
        var url = "ajaxTest.aspx?xn=" + obj.id;
        xh = new XMLHttpRequest();
//        xh.onreadystatechange = function () {
//            if (xh.readyState == 4 && xh.status == 200) {
//                document.getElementById("text").innerHTML = xh.responseText;
//                document.getElementById("slip").innerHTML = xh.responseText;
//            }
        //        }
        xh.open("POST", url,false);
        xh.send();
        document.getElementById("text").innerHTML = xh.responseText;
        document.getElementById("slip").innerHTML = xh.responseText;
    }



熟悉XMLHttpRequest的,帮忙解决下,谢谢啦!


------解决方案--------------------

------解决方案--------------------
onclick="navjax(this);return false"
------解决方案--------------------
反回后页面就重新加载了?那不是XMLHttpRequest的原因,你是不是哪个地方加了页面刷新?
而且后台页面处理异步请求的方法最好加上Response.End();
------解决方案--------------------
href='javascript:;'
------解决方案--------------------
没这样写的啊。
href="#" 或者增加 return false 都可以的。
探讨

发现加个href="#"后,去掉return false也是可以的,但这样href="javascript:navjax(this)",却不行

------解决方案--------------------
<a id="basicInfo" href="" onclick="navjax(this)">这是一个链接,为空的处理,不同的浏览器处理不一样,有的解释为当前页,有的解释为当前目录,看什么浏览器了
碰到这种空链接,我一般设置为
<a href="#0" 这样就不会有链接了,如果设置为href="#",点击后会回到页首,所以用#0,指向不存在的锚

同样的:<img src="">这样的标签会导致页面被加载2次(有的是加载目录,可能报403错误),但是这种通常页面看不出来,只有后台可以发现断点断了2次,或通过HttpWatcher,可以抓到2次请求