当前位置: 代码迷 >> ASP.NET >> XMLHttpRequest异步请求后造成页面重新加载的有关问题
  详细解决方案

XMLHttpRequest异步请求后造成页面重新加载的有关问题

热度:6499   发布时间:2013-02-26 00:00:00.0
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次请求
  相关解决方案