ajax的简单封装

ajax的简单封装

ajax一般分为简单的四部:

创建ajax对象(这里兼容ie的话要做一下处理)
连接,即请求对象的open方法(get和post还有点不同,get参数要放在url后面,post要设置请求头)
发送,即请求对象的send函数(post参数则放在send里面)
接收,在onreadystatechange(存储函数或函数名,每当readyState属性改变时,就会调用该函数。)函数里面处理。
还可以加上超时。

onreadystatechange分析:

要先判断readyState的状态(有四个状态)
①: 0,请求未初始化;
②: 1,服务器连接已建立;
③: 2,请求已接收;
④: 3,请求处理中;
⑤: 4,请求已完成,且响应已就绪

当readyState等于4时,你又要判断status的状态
请求成功时status状态 200-300(不包括300) ,还有304(是缓存)(具体状态可以去参考文档)
在成功(失败)的回掉函数里面将xhr.responseText的值返回出去。

代码

function ajax(options) {
        var xhr = null;
        var params = formsParams(options.data);
        //创建对象
        if (window.XMLHttpRequest) {
            xhr = new XMLHttpRequest()
        } else {
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        // 连接
        if (options.type == "GET") {
            xhr.open(options.type, options.url + "?" + params, options.async);
            xhr.send(null)
        } else if (options.type == "POST") {
            xhr.open(options.type, options.url, options.async);
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            xhr.send(params);
        }
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                options.success(xhr.responseText);
            }
        }
        function formsParams(data) {
            var arr = [];
            for (var prop in data) {
                arr.push(prop + "=" + data[prop]);
            }
            return arr.join("&");
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值