六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 29|回复: 0

一个ajax通用函数【看精通js】

[复制链接]

升级  85.33%

50

主题

50

主题

50

主题

秀才

Rank: 2

积分
178
 楼主| 发表于 2013-1-23 02:27:21 | 显示全部楼层 |阅读模式
待测试:
function ajax (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();    function httpSuccess (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;    }    function httpData (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;        }    }}function serialize (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('&');}
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表