ajax在网络断开时,缓存ajax的调用,网络连接时,恢复ajax调用

来源:互联网 发布:软件恢复大师 编辑:程序博客网 时间:2024/05/22 10:53
//定义一个变量,当因为网络连接断开而使得Ajax调用无法立即执行,把Ajax的调用放在stack数组中var stack=[];//定义函数产生ajax调用function ajax(url,callback){    //利用XMLHttpRequest类使得可以在浏览器中产生Ajax请求    var xhr=new XMLHttpRequest(),    LOADED_STATE=4,    OK_STATUS=200;//如果浏览器处于离线状态,吧函数参数(url和callback)添加到stack 变量中以便用于稍后的处理    if(!navigator.online)    {        stack.push(arguments);    }else    {        //如果浏览器处于在线状态,则发出Ajax调用        xhr.onreadystatechange=function(){            //readyState属性为4则表示服务器的响应已经完成            if(xhr.readyState!==LOADED_STATE){                return;                }            //如果服务器返回HTTP的状态码为200,执行回调函数            if(xhr.status===OK_STATUS)            {                callback(xhr.responseText);            }        };        //触发Ajax HTTP GET 操作        xhr.open("GET",url)        xhr.send();    }}//定义一个函数,依次遍历尚未发出的Ajax调用的stack数组,依次发送Ajax调用funtion clearStack(){    while(stack.length)    {        ajax.apply(ajax,stack.shift());    }}window.addEventListener("online",clearStack,false);
阅读全文
0 0
原创粉丝点击