`
fp_moon
  • 浏览: 983028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

同一页面无法多次使用XmlHttp发起Ajax请求的真实原因--l转

阅读更多

同一页面无法多次使用XmlHttp发起Ajax请求的真实原因   

当该页面第一次发出Ajax请求的时候可以正常运行,但是从第二次调用开始发现——onreadystatechange()事件再也没有被调用!
于是上Google查了一下,发现还有不少人为此感到困扰,而且发现很多人持有的是这个错误的观点:
他们说这是因为一个XmlHttp只能使用一次send(),每次要使用新的XmlHttp。但是我的XmlHttp是函数内的局部变量,函数执行完毕它就会被销毁啊,而且即使我在函数的开头把它赋值null也没有用。
/*然后我发现一个十分有意义的帖子
*/
原来是这个原因,由于IE浏览器有缓存,第一次发送的Ajax请求确实被发送出去了,也接收到了回应,所以就触发了onreadystatechange()事件。但是从第二次起IE浏览器发现缓存里面已经有请求的页面,于是Ajax请求将不再被发送出去,这样当然也不会触发onreadystatechange()事件了。所以只要我们在Url里加上+"&"+Math.random()就可以避免这个问题。当我做了这样修改后果真就可以在同一页面多次使用XmlHttp发起Ajax请求了。接着我把xmlhttp = null删除掉也仍然可以正常运行了。
附代码如下:
<script type="text/javascript">
function createXHR() {
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }
    if (window.ActiveXObject) {
        var msxmls = ['MSXML3', 'MSXML2', 'Microsoft']
        for (var i=0; i < msxmls.length; i++) {
            try {
                return new ActiveXObject(msxmls[i]+'.XMLHTTP')
            } catch (e) { }
        }
        throw new Error("No XML component installed!")
    }
}
</script>
<script type="text/javascript">
function refreshComment() {
    var xmlhttp = createXHR();
    var xmlhttpUrl = "flash.aspx?ajax=refresh&"+Math.random();
    xmlhttp.open("GET", xmlhttpUrl, true);
    xmlhttp.send(null);
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
//                alert("xmlhttp.status = " + xmlhttp.status);
//                alert("xmlhttp.readyState = " + xmlhttp.readyState);
               divCommentList.innerHTML=xmlhttp.responseText;
            }
        }
    }
}
</script>
分享到:
评论
1 楼 cheeruplc 2014-04-10  
  xml进行修改之后 刷新请求 不执行 看了你的博文解决  谢了!

相关推荐

    ajax课件--------Ajax.ppt

    2. 无刷新更新页面:Ajax 可以实现在不刷新整个页面的情况下更新页面内容,减少用户实际和心理等待时间。 3. 更好的用户体验:Ajax 可以提供更好的用户体验,例如实时更新、动态效果等。 4. 转嫁服务器负担:Ajax ...

    掌握 Ajax第 2 部分-使用 JavaScript 和 Ajax 发出异步请求

    ### 掌握Ajax第二部分:使用JavaScript和Ajax发出异步请求 #### XMLHttpRequest对象与Web2.0 在探讨Ajax和JavaScript如何发出异步请求之前,我们先简要回顾一下Web2.0的概念及其与传统Web1.0的区别。Web1.0时代,...

    AJAX(用法总结-精华版)

    AJAX 的核心是使用浏览器内置的 XMLHttpRequest 对象异步向服务器发送请求,并使用服务器返回的数据更新当前页面。 获得 AJAX 对象 ---------------- 要使用 AJAX,我们首先需要获得 XMLHttpRequest 对象。由于...

    Alexa 查询系统 (Xmlhttp + Ajax)

    **Alexa 查询系统 (Xmlhttp + Ajax)** 在Web开发中,Alexa查询系统是一种能够实时获取并展示网站排名信息的应用。本系统采用ASP技术,结合XMLHTTP与Ajax(异步JavaScript和XML)来实现页面的无刷新更新,提供用户...

    ajax请求,asp的实例

    本篇文章通过一个简单的示例介绍了如何使用Ajax发起请求以及ASP页面如何响应这些请求。通过这种方式,Web应用能够在用户交互过程中更加高效地与服务器通信,提高用户体验。对于初学者而言,掌握这一技术的基础是非常...

    解决ajax请求后台,有时收不到返回值的问题

    jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现

    AJAX核心-XMLHTTP对象

    **AJAX核心-XMLHTTP对象** 在Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建动态网页的技术,它允许在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。XMLHTTP对象,全称...

    Ajax 全攻略-----完全掌握项目开发要求

    Ajax全攻略——完全掌握项目开发要求 Ajax,即异步JavaScript和XML的缩写,是一种在无需刷新整个网页的情况下,能够更新部分网页内容的技术。它并非全新的技术,而是通过组合已有技术,如JavaScript、DOM、CSS和XML...

    Ajax请求的五个步骤!!!

    通过Ajax,前端可以向服务器发起请求获取数据,并根据返回的数据更新当前页面的某一部分,从而提高用户体验和网站性能。 #### 三、Ajax请求的五个步骤 ##### 1. 创建一个异步对象 创建一个异步对象是使用Ajax的第...

    ajax异步请求小结

    **Ajax异步请求小结** Ajax(Asynchronous JavaScript and XML)是一种用于创建快速、动态网页的技术,它允许在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容。这种技术极大地提升了用户体验,...

    alexa_Xmlhttp_Ajax

    **Alexa, XMLHTTP, 和 Ajax** 在互联网技术领域,Alexa、XMLHTTP以及Ajax都是不可或缺的概念,它们各自扮演着不同的角色,共同推动了Web应用的发展。 **Alexa** 是亚马逊公司提供的一项服务,主要用来追踪全球网站...

    Ajax异步请求

    Ajax异步请求是一种基于JavaScript和XMLHttpRequest对象的技术,允许Web应用程序在不刷新整个页面的情况下,更新页面的一部分内容。它可以实现异步通信,提高用户体验和页面加载速度。 在Ajax异步请求中,...

    ajax获取单独页面

    **Ajax 获取单独页面** Ajax(Asynchronous JavaScript and XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它的核心是利用JavaScript与服务器进行异步数据交换,通过XML或者JSON等格式传输数据...

    Ajax XMLHttp 手册 中文版

    Ajax(异步JavaScript和XML)是一种在无需刷新整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新。XMLHttp是实现Ajax的核心对象,它允许Web应用程序在后台与...

    使用XMLHTTP POST 方式,实现远程请求

    使用XMLHTTP POST 方式,实现远程请求

    使用AJAX发送异步请求

    在本文中,我们将深入探讨如何使用AJAX发送异步请求,并详细解析XMLHttpRequest对象。 首先,让我们了解XMLHttpRequest对象。这个对象是AJAX的基础,它允许JavaScript在后台与服务器进行交互,而不会打断用户的界面...

    xmlHttp对象 手动Ajax

    XMLHttpRequest(通常称为xmlHttp对象)是JavaScript中的一个核心组件,它是实现异步通信(Ajax,Asynchronous JavaScript and XML)的基础。Ajax技术允许我们在不刷新整个网页的情况下与服务器进行数据交换,极大地...

    XMLHttp中文参考手册

    Xmlhttp对象,也被称为“AJAX”(Asynchronous JavaScript and XML)的核心,允许网页在不刷新整个页面的情况下与服务器进行交互,提升了用户体验,实现了网页的动态更新。 1. **XMLHttp对象基础**: - **创建对象...

    Ajax页面局部异步刷新技术

    ### Ajax页面局部异步刷新技术 #### 知识点概览 在现代Web开发中,异步刷新技术是一项非常重要的技术,它使得网页无需重新加载整个页面就能与服务器交互并更新部分数据。其中,最典型的技术就是Ajax(Asynchronous ...

    ajax的xmlhttp的帮助手册

    **Ajax与XMLHttpRequest详解** Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。这种技术的核心是XMLHttpRequest对象,它允许JavaScript在后台与服务器...

Global site tag (gtag.js) - Google Analytics