博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
简单通用Ajax函数
阅读量:5347 次
发布时间:2019-06-15

本文共 2428 字,大约阅读时间需要 8 分钟。

1 //一个简单的执行ajax的通用函数 2 //带一个参数,参数为对象,需要传送的东西,都在里面 3 function ajax(options){ 4   //如果没有传入响应的值,就用默认的代替 5   options = { 6         //HTTP请求类型 7         type : options.type || "POST", 8         //请求的URL 9        url : options.url || "www.XXX.com/XXX.php?",10         //请求的超时时间11         timeout : options.timeout || 5000,12        //请求失败、成功、完成13        onComplete : options.onComplete || function(){alert(请求成功)},14        onError : options.onError || function(){alert(请求失败)},15         onSuccess : options.onSuccess || function(){alert(请求完成)},16         //服务器返回的数据类型,用于判断服务器返回的数据。从而进行操作17         date : options.date || " "18   }19 20   //创建XML对象21   var xml = new XMLHttpRequest();22   //初始化异步请求23   xml.open(options.type,options.URL,ture);24   //记录请求是否成功完成25   var requestDone = false;26   //初试一个回调函数,用于取消函数27   setTimeout(function(){28     requestDone = true;29   },options.timeout);30   31   //监听文档状态的更新32   xml.onreadystatechange = function(){33     //保持等待,知道数据加载完成,并保证请求未超时34     if(xml.readyState == 4 && !requestDone){35       //检查是否请求成功36       if(httpSuccess(xml)){37         //以服务器返回的数据作为参数调用成功回调函数38         options.onSuccess(httpDate(xml,Date,options.type));39       }else{40         //否则就是发生了错误,执行Error41         options.onError(); 42       }43       //调用完成回调函数44       options.onComplete();45       //避免内漏,清理文档46       xml = null;47     }48   }49   50   //建立与服务器的连接51   xml.send();52   53   //判断Http响应是否成功54   function httpSuccess(r){55     try{56       //如果得不到服务器状态,且正在请求本地文件,则认为成功57       return !r.status && location.protocolo = "file :" ||58       //所有200到300的状态码都认为成功59       (r.status > 200 && r.statys < 300) ||60       //文档未被修改也算成功61       r.statys == 304 ||62       //safiri 在文档未被修改时返回空状态63       navigator.userAgent.indexof("Safiri") >= 0 && typeof r.status == "undefind";64     }catch(e){}65     //若检查状态失败,则假设请求失败66     return false;67   }68   69   //从 Http 响应中解析正确数据70   function httpDate(r,type){71     //获取 content-type 的首部72     var ct = r.getResponseHeader("content-type");73     //若没有提供默认类型,则判断服务器返回的是否是 xml 数据74     var date = !type && ct && ct.indexof("xml") >= 0;75     //若是,获取 xml 对象,否则返回文本内容76     date = type == "xml" || date ? r.resposeXML : r.resposeText;77     //若指定类型为 script ,则以 javascript 的形式执行返回文本78     if(type == "script"){79       eval.call(window,date); 80     }81     //返回响应数据(或为xml或为字符串)82     return date;83   } 84 }

 

转载于:https://www.cnblogs.com/Amax/archive/2012/12/04/2801046.html

你可能感兴趣的文章
4种java定时器
查看>>
Vue.js 教程
查看>>
linux 设置网卡
查看>>
hive 语法 case when 语法
查看>>
Ajax:js读取txt内容(json格式内容)
查看>>
Task 7 买书最低价格问题
查看>>
Selenium3+python自动化007-警告框
查看>>
html5 相同形状的图形进行循环
查看>>
springboot中文官方文档
查看>>
lamdba表达式
查看>>
ThreadLocal实现线程范围内共享
查看>>
多校HDU5723 最小生成树+dfs回溯
查看>>
ASP.NET MVC分页实现之改进版-增加同一个视图可设置多个分页
查看>>
关于ASP.NET MVC开发设计中出现的问题与解决方案汇总 【持续更新】
查看>>
关于Entity Framework中的Attached报错的完美解决方案终极版
查看>>
Selenium之Web页面滚动条滚操作
查看>>
组合数据类型练习,英文词频统计实例上
查看>>
Uber回馈开源的一些软件
查看>>
day 3 修改haproxy.cfg 作业
查看>>
UIScrollView —— 缩放实现案例(二)
查看>>