一个ajax通用函数(xmlhttprequest封装)
来源:互联网 发布:网络学英语 编辑:程序博客网 时间:2024/06/06 06:32
var ajax = function(options){
options = {
type : options.type || 'POST',
url : options.url || '',
timeout : options.timeout || 5000,
onComplete : options.onComplete || function(){},
onError : options.onError || function(){},
onSuccess : options.onSuccess || function(){},
data : options.data || ''
}
if(typeof XMLHttpRequest === 'undefined'){
XMLHttpRequest = function(){
return new ActiveXObject(
navigator.userAgent.indexOf('MSIE 5') >= 0 ?
'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'
);
}
}
var xml = new XMLHttpRequest();
xml.open(options.type,options.url,true);
var timeoutLength = options.timeout;
var requestDone = false;
setTimeout(function(){
requestDone = true;
},timeoutLength);
xml.onreadystatechange = function(){
if(xml.readyState == 4 && !requestDone){
if(httpSuccess(xml)){
options.onSuccess(httpData(xml,options.type));
}else{
options.onError();
}
options.onComplete();
xml = null;
}
};
xml.send();
var httpSuccess = function(r){
try{
return !r.status && location.protocol == "file:"
|| (r.status >= 200 && r.status < 300)
|| r.status == 304
|| navigator.userAgent.indexOf('Safari') >= 0 && typeof r.status == 'undefined';
}catch(e){}
return false;
}
var httpData = function(r,type){
var ct = r.getResponseHeader("content-type");
var data = !type && ct.indexOf('xml') >= 0 ;
data = type == 'xml' || data ? r.responseXML : r.responseText;
if(type == 'script'){
eval.call(window,data);
return data;
}
}
}
var serialize = function(a){
var s = [];
if(a.constructor == Array){
for(var i = 0 ; i < a.length ; i++){
s.push(a[i].name + '=' + encodeURIComponent(a[i].value));
}
}else{
for(var j in a){
s.push(j + '=' + encodeURIComponent(a[j]));
}
}
return s.join('&');
}
options = {
type : options.type || 'POST',
url : options.url || '',
timeout : options.timeout || 5000,
onComplete : options.onComplete || function(){},
onError : options.onError || function(){},
onSuccess : options.onSuccess || function(){},
data : options.data || ''
}
if(typeof XMLHttpRequest === 'undefined'){
XMLHttpRequest = function(){
return new ActiveXObject(
navigator.userAgent.indexOf('MSIE 5') >= 0 ?
'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP'
);
}
}
var xml = new XMLHttpRequest();
xml.open(options.type,options.url,true);
var timeoutLength = options.timeout;
var requestDone = false;
setTimeout(function(){
requestDone = true;
},timeoutLength);
xml.onreadystatechange = function(){
if(xml.readyState == 4 && !requestDone){
if(httpSuccess(xml)){
options.onSuccess(httpData(xml,options.type));
}else{
options.onError();
}
options.onComplete();
xml = null;
}
};
xml.send();
var httpSuccess = function(r){
try{
return !r.status && location.protocol == "file:"
|| (r.status >= 200 && r.status < 300)
|| r.status == 304
|| navigator.userAgent.indexOf('Safari') >= 0 && typeof r.status == 'undefined';
}catch(e){}
return false;
}
var httpData = function(r,type){
var ct = r.getResponseHeader("content-type");
var data = !type && ct.indexOf('xml') >= 0 ;
data = type == 'xml' || data ? r.responseXML : r.responseText;
if(type == 'script'){
eval.call(window,data);
return data;
}
}
}
var serialize = function(a){
var s = [];
if(a.constructor == Array){
for(var i = 0 ; i < a.length ; i++){
s.push(a[i].name + '=' + encodeURIComponent(a[i].value));
}
}else{
for(var j in a){
s.push(j + '=' + encodeURIComponent(a[j]));
}
}
return s.join('&');
}
0 0
- 一个ajax通用函数(xmlhttprequest封装)
- 封装一个ajax函数
- JS-封装 ajax XmlHttpRequest
- ajax通用创建XMLHttpRequest对象
- 封装一个Ajax工具函数
- Ajax应用示例: XMLHttpRequest封装
- Ajax通用代码封装
- Ajax创建XMLHttpRequest对象通用方法
- ajax获取XMLHttpRequest对象的通用方法
- 封装一个简单的同步Ajax函数
- 封装一个简单的同步Ajax函数
- 封装一个简单的Ajax函数
- 如何自己封装一个ajax函数
- Ajax定义一个XMLHttpRequest工厂
- 对AJAX中XMLHttpRequest的封装
- Ajax之工厂模式封装XMLHttpRequest
- XmlHttpRequest CORS 与 AJAX封装类
- 获取一个XMLHttpRequest 对象的通用方法
- Vijos 1193题:扫雷
- linux运维-vsftpd服务
- Linux虚拟网络之tun(二)Raw包转发
- 通过AngularJS实现前端与后台的数据对接——服务(service,$http)
- JUC线程池--线程池架构
- 一个ajax通用函数(xmlhttprequest封装)
- C/C++编译器预定宏使用
- Unity中默认的文件夹以及路径问题
- Windows下mysql忘记root密码的解决方法
- url 传递中文参数乱码问题
- 结构体
- asp.net 使用NPOI实现导出Excel功能
- 敏俊物联MJIOT-AMB-03 RTL8710BN 高性能wifi模块
- 给大家安利一个关于需求分析的免费公开课