封装2个ajax函数

来源:51js 时间:2010-09-03 18:14:00 

听说最近流行JQ风格的语法,不流行EXT风格了

一.

//ajax类
fw=window.fw||{};

fw.ajax = {
    init : function (url, method){
        this.url = url;
        this.arg = null;
        this.json = {};
        this.method = method || "get";
        return this;
    },
    //获取表单的值作为参数
    setForm : function(form){
        this.json = fw.getForm(form);
        return this;
    },
    //直接赋值参数
    setArg : function(o){
        var a = [];
        o = fw.merge(this.json, o);
        for(var i in o){
            a.push(i+"="+o[i]);
        }
        if(a.length>0){
            a = a.join("&");
            this.method=="get" ? this.url+="?"+a : this.arg=a;
        }
        return this;
    },
    //回调
    callback : function(cb,tp){
        var x = fw.xmlhttp();
        x.open(this.method, this.url, true);
        x.onreadystatechange = function(){
            if(cb&&x.readyState==4&&(x.status==0||x.status==200)){
                var v = x.responseText;
                if(tp=="json") v = fw.parse(v);
                cb(v);
            }
        }
        x.send(this.arg);
    }
}
//demo: fw.ajax.init("data/ajax.php","post").setForm("ajax_form").setArg({act:"show"}).callback(showResult,"json");

2.

 


function Ajax (Args){
    var Args = Args || {}, XHR = (function() {
        try {return new XMLHttpRequest();}catch(e){};
        try {return new ActiveXObject('Msxml2.XMLHTTP');}catch(e){};
        try {return new ActiveXObject('Microsoft.XMLHTTP');}catch(e){};       
    })();
    var Data = !!Args.Data && (function() {
        var tempArr = [];
        for(var i in Args.Data) tempArr.push(i + '=' + Args.Data[i]);
        return tempArr.join('&');
    })();
    XHR.open(Args.Method || 'GET', (Args.Url || document.URL) + (Data ? '?' + Data : ''), !!Args.CallBack);
    !!Args.CallBack && (XHR.onreadystatechange = function(){
        (XHR.readyState == 4 && XHR.status == 200) ? Args.CallBack.True.call(XHR) :
        Args.CallBack.False && Args.CallBack.False.call(XHR.readyState < 4 ? XHR.readyState : XHR.status);
    });
    !!Args.Method && XHR.setRequestHeader('Content-type', 'application/x-www-form-urlencoded;charset=' + Args.CharSet || 'utf-8');
    XHR.send(Data || null);
    return XHR;
};

//调用说明:
Ajax({
    Url : 'archiver/',    //访问地址,选填,默认为当前页
    Data : {            //提交的数据列表,如果要将url后面的get参数写在这里,那么url请不要带参数,选填
        wd : '51js'
    },
    Method : 'get',            //模式,选填,默认为get
    CharSet : 'gbk',        //编码,选填,默认为utf-8
    CallBack : {            //回调函数,选填,为空表示整个过程为同步执行
        True : function(){    //成功调用的函数,选填,函数自动替换this对象为XMLHTTPRequest对象
            alert(this.responseText);
        },
        False : function(){    //加载或失败调用的函数,选填,函数自动替换this对象为readyState(加载中)或status(加载失败)
            alert(this);
        }
    }
});
//同步get
//调用方法:alert(Ajax({Url : 'https://www.aspxhome.com/'}).responseText);

 

标签:ajax,函数,封装
0
投稿

猜你喜欢

  • asp函数判断服务器是否安装了某种组件

    2008-10-11 14:45:00
  • 浏览器tab的设计

    2008-08-11 13:03:00
  • sqlserver 存储过程动态参数调用实现代码

    2011-10-24 19:41:22
  • Asp截获后台登录密码的代码

    2012-12-04 20:20:38
  • MySql数据库基本命令集会

    2011-08-05 18:43:23
  • Javascript 获取css属性

    2009-05-31 16:49:00
  • asp制作验证码的方法

    2008-05-08 12:50:00
  • Windows Server 2008之数据安全保护

    2008-12-04 12:49:00
  • 从if else到switch case再到抽象

    2010-11-05 18:30:00
  • 选择什么样的DOCTYPE

    2007-05-31 09:32:00
  • RDFa介绍——构建更友好的web页面

    2009-09-19 17:01:00
  • MySQL重定位数据库目录的内容

    2009-02-26 16:03:00
  • 如何使用sql语句来修改数据记录

    2007-06-21 11:48:00
  • Mootools常用方法扩展(三)

    2009-01-14 20:07:00
  • 使用css2.1实现多重背景、多重边框效果[译]

    2010-08-23 16:32:00
  • 交互设计实用指南系列(9)—一次点击

    2010-02-08 12:42:00
  • 长文章自动分页类

    2008-09-10 12:11:00
  • ASP CacheControl 属性

    2009-04-28 13:09:00
  • 文本框textarea限制输入文字个数的方法

    2008-01-28 13:02:00
  • 列表模块是否需要标题

    2009-06-25 14:11:00
  • asp之家 网络编程 m.aspxhome.com