zoukankan      html  css  js  c++  java
  • XMLHttp连续调用SEND需要注意的问题

    我们在自己实现AJAX的时候,在应用中常需要连续调用SEND函数,并寄希望SEND函数调用结束后可以自动正确调用其回调函数,然而有时候不注意可能事与愿违,产生此情况的原因在于AJAX的实现上存在不正确用法。

    如我们写调用方法代码如下:

    var xmlhttp=new XMLHttpRequest(); //此处没有考虑不同浏览器兼容问题

    function send (....) { //

    xmlhttp.open(post,url,true); //url为调用的网络服务页面或服务

    xmlhttp.send xml;

    xmlHttp.onreadystatechange=callbackfunc; //callbackfunc是回调函数

    }

    这样如果连续两次包括两次以上连续调用send函数(代码见下)将会发现只有最后一次调用的回调函数被执行,而之前的回调函数根本不会被调用

    send(.....); //第一次调用;

    send(.....); //第二次调用;这样只有此处的回调函数会被调用;

    其实产生这个情况的主要原因在于,每个xmlhttp对象的一此send只能对应相应一个onreadystatechange事件,这样当第一次调用后,立即发出第二次调用,则onreadystatechange会反映第二次调用的状况,因此如果有需求需要连续两次或者两次以上调用Send函数,则必须每次使用不同的xmlhttp对象 ,写法可以参考如下:

    function send (....) { //

    var xmlhttp=new XMLHttpRequest(); //此处没有考虑不同浏览器兼容问题,

    //此处xmlhttp与上面写法不同是函数内部的局部变量

    xmlhttp.open(post,url,true); //url为调用的网络服务页面或服务

    xmlhttp.send xml;

    xmlHttp.onreadystatechange=callbackfunc; //callbackfunc是回调函数

    }

  • 相关阅读:
    Linux基础命令---nfsstat显示nfs信息
    Linux基础命令----smbclient
    Myeclipse10下载,安装,破解,插件,优化介绍
    MyEclipse常用插件使用教程
    MyEclipse10 中的两种FreeMarker插件的安装与配置
    导入项目名称重复
    append,appendTo和prepend #1daae2
    Java Session超时设置
    jquery刷新页面
    windows不能显示此连接属性。windows management instrumentation (WMI) 信息可能损坏
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994684.html
Copyright © 2011-2022 走看看