原生 JavaScript 封住 ajax

12 篇文章 0 订阅
6 篇文章 0 订阅

原生 JavaScript 封住 ajax

var loadData = function (obj) {
    "use strict";

    // obj is null
    var obj = obj || {};

    var type, url, success, error, data, result;
    type = obj.type || "post";
    url = obj.url || "";
    success = obj.success || "";
    error = obj.error || ""
    data = obj.data || "";

    var toStr = Object.prototype.toString;

    // 1. 创建 XMLHttpRequest object
    var xhr = new XMLHttpRequest();

    // 判断数据是否合法
    var data_type = toStr.call(data);
    switch (data_type) {
        case "[object Object]":
        case "[object FormData]":
            break;
        default:
            result = "不合法的数据";
            return typeof(error) === 'function' && error(result);
    }

    // 2. 准备发送 并且 执行发送
    if (type === "get") {
        var arr = [];
        for (var i in data) {
            arr.push(i + "=" + data[i]);
        }
        data = arr.join("&");

        url += "?" + data;
        xhr.open(type, url, true);
        xhr.send(null);
    }else if (type === "post") {
        data = JSON.stringify(data);

        xhr.open(type, url, true);
        xhr.setRequestHeader('Accept', 'application/json, text/plain, */*');
        xhr.setRequestHeader('Content-type', 'application/json;charset=UTF-8');
        xhr.send(data);
    }

    // 3. 设置回调函数
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            switch (xhr.status) {
                case 200:
                    result = JSON.parse(xhr.responseText);
                    return typeof(success) === "function" && success(result);
                case 404:
                    result = "404 no request resources found";
                    return typeof(error) === "function" && error(result);
                case 500:
                    result = "500 server error !"
                    return typeof(error) === "function" && error(result);
                default :
                    result = "未知错误";
                    return typeof(error) === "function" && error(result);
            }
        }
    }
}

调用

loadData({
     type: "post",
     // url: "http://ajax.web.com/api/index/get_all_art",
     url: "http://ajax.web.com/api/admin/login",
     success: function (result) {
         console.log(result);
     },
     error: function (result) {
         console.log(result)
     },
     data: {
         "username": 'dsasad',
         "passwd": 'dasd..'
     }
});

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值