Ajax请求详解

一、原生Ajax
function AJAX_OBJ(url) {
    var xmlHttp = {};
    if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
            var status = xmlHttp.status;
            if (status == 200) {
                var text = xmlHttp.responseText;
                console.log("Ajax send success "+text);
            } else {
                console.log("状态不正确,为: " + status);
            }
        }
    };
    xmlHttp.open("GET", url, true); // async:true 是异步Ajax请求,不容易出现奇怪的bug
    xmlHttp.timeout=500;
    xmlHttp.ontimeout=function(){
        console.log("Ajax request timeout");
    };
    xmlhttp.setRequestHeader("token","header-token-value"); // 可以携带token
    xmlHttp.setRequestHeader('content-type','application/x-www-form-urlencoded');
    xmlHttp.send(null);
}
二、JQuery Ajax请求

$.post() 和 $.get() 默认是 异步请求

//不是太好用·
function AJAX_OBJ(url, obj, callback) {
  //$.ajaxSettings.async = false;  //Ajax同步请求设置
  $.post(url, obj, { headers: { Authorization: `Bearer ${Base.token}` } }).then((res) => {
    callback(res.data);
  }).catch((error) => {
    if (error.response.status != '504') {
      callback({ message: `请求接口报错!错误码:${error.response.status}` });
    } else {
      callback({ message: '请求超时,请重试。' });
    }
  });
}
// 好用的
function AJAX_OBJ(url, obj, callback) {
  $.ajax({
    type: "POST",
    url: url,
    data: JSON.stringify(obj),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    beforeSend: function (xhr) {
        // //发送ajax请求之前向http的head里面加入验证信息
        xhr.setRequestHeader("Authorization", token); // 请求发起前在头部附加token
    },
    success: function (res, status) {
        callback(res.data);
    },
    //error: function (XMLHttpRequest, textStatus, errorThrown) {
    // alert(XMLHttpRequest.status);
    // alert(XMLHttpRequest.readyState);
    // alert(textStatus);
    //},
    complete: function () {
    }
});
}
三、XMLHTTP 的 readyState 值含义:
  • 0-未初始化,即尚未调用 open。
  • 1-初始化,即尚未调用 send。
  • 2-发送数据,即已经调用 send。
  • 3-数据传送中。
  • 4-完成。
四、响应错误代码
状态码响应类别原因
1xx信息性状态码(Informational)服务器正在处理请求
2xx成功状态码(Success)请求已正常处理完毕
3xx重定向状态码(Redirection)需要进行额外操作以完成请求
4xx客户端错误状态码(Client Error)客户端原因导致服务器无法处理请求
5xx服务端状态码(Server Error)服务器原因导致处理请求出错
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值