js封装AJAX

关注小编微信公众号公众号【前端基础教程从0开始】回复“1”,拉你进程序员技术讨论群,群内有大神,可以免费提供问题解答。公众号回复“小程序”,领取300个优秀的小程序开源代码+一套入门教程。公众号回复“领取资源”,领取300G前端,Java,产品经理,微信小程序,Python等资源合集大放送,让我们一起学前端。

我们通常使用jquery封装好的ajax,很不错。想想自己也可以封装一个。这样方便很多。而且修改起来也很方便:

话不多说直接上代码
(function(){
    function createXHR() {
        var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
        return xhr;
    }

    function ajax(obj) {
        var xhr = createXHR();

        //通过params()将名值对转换成字符串
        obj.data = params(obj.data);

        //判断请求方式
        if (obj.method === "get") {
            //如果是get请求则将url加在后面,并且需要根据是否存在问好和&来处理
            obj.url += obj.url.indexOf("?") == -1 ? "?" + obj.data : "&" + obj.data;
        }

        //同步
        if (obj.async === false) {
            callback();
        }

        //异步
        if (obj.async === true) {
            xhr.onreadystatechange = function () {
                if (xhr.readyState == 4) {
                    callback();
                }
            }
        }

        xhr.open(obj.method, obj.url, obj.async);

        if (obj.method === "post") {
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            xhr.send(obj.data);
        } else {
            xhr.send(null);
        }

        function callback() {
            if (xhr.status == 200) {  //判断http的交互是否成功,200表示成功
                console.log(obj);
                obj.success(xhr.responseText);          //回调传递参数
            } else {
                obj.error("请求错误");
            }
        }

        //键值对转换字符串
        function params(data){
            var arr = [];
            for(var i in data){
                arr.push(i+"="+data[i]);
            }
            return arr.join("&");
        }

    }

    window.ajax = ajax;

})();

下面是调用方式:

ajax({
    method:"get",
    url:"http://localhost/sevice.php?username=allen&age=12",
    // data:{
    //     "username":"iwen",
    //     "age":"12"
    // },
    success:function(message){
        alert(message);
    },
    async : true,
    error:function(error){
        alert(error);
    }
});

下面是服务器上最简单的可以返回数据的代码:

<?php
echo $_GET['username'].$_GET['age'];
>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值