原生js的AJAX封装及实例

代码优势

类数组作为参数的缺点

  • 参数太多,不易使用,需要记住顺序
  • 参数为空时,需要使用undefined 或者 null 占位,否则参数会错误

对象作为参数传参的优点:

  • 直接使用对象,不用记参数顺序
  • 参数干净

封装Ajax

    function myAjax(options) {
    	//创建实例
        var http = new XMLHttpRequest();
        // 发送请求的方式和url
        http.open(options.method, options.url);
        // 监听http对象状态发生更改
        http.onreadystatechange = function () {
            if (http.status === 200 && http.readyState === 4) {
                options.callback(http.responseText)
            }
        }
        //POST方式 表单形式的请求头
        if (options.method === 'POST') {
            http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
            http.send(encodeFormData(options.data));
        } else {
        	//发送请求
            http.send(options.data);
        }
    }

将数据转成表单编码

//表单编码
function encodeFormData(data){
				if(!data){
					return "";
				}
				var pairs = [];
				for(var name in data){
					if(!data.hasOwnProperty(name)){
						continue;
					}
					if(typeof data[name] == "function"){
						continue;
					}
					var value = data[name].toString();
					name = encodeURIComponent(name.replace("%20","+"));//编码名字
					value = encodeURIComponent(value.replace("%20","+"));//编码值
					pairs.push(name+"="+value);
				}
				return pairs.join('&');
			}

使用

        var obj = {
            method: 'GET',
            data: null,
            url: 'http://XXXXXXXXXXXXXXXXXXXXXXXXX',
            callback: function () {}
        }
        myAjax(obj)

以下奉上实例
演示:
http://www.zwq666.top/myWorkspace/AJAX/AJAX.html
(如果没数据把https改为http)
代码下载地址
https://download.csdn.net/download/qq972618478/11432047

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值