Ajax分原生和JQuery两种写法,设置超时时间时单位为毫秒,异步请求可以设置超时时间,但同步请求不能设置超时时间

一、原生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);
    xmlHttp.timeout=500;
    xmlHttp.ontimeout=function(){
        console.log("Ajax request timeout");
    };
    xmlHttp.setRequestHeader('content-type','application/x-www-form-urlencoded');
    xmlHttp.send(null);
}

二、JQuery的Ajax写法


function request(url, data, success_callback,error_callback) {
    var xhr = $.ajax({
        type: "POST", //提交数据的类型 POST GET
        url: url, //提交的网址
        data: data, //提交的数据
        timeout:10000, //设置超时的时间10s
        async:true, //请求方式 true异步请求(默认) false同步请求
        //返回数据的格式
        datatype: "json", //"xml", "html", "script", "json", "jsonp", "text".
        xhrFields: {
            withCredentials: true
        },
        crossDomain: true,
        //在请求之前调用的函数
        beforeSend: function () {},
        //成功返回之后调用的函数             
        success: function (response) {
            success_callback(response);
        },
        //调用执行后调用的函数,无论成功或失败都调用
        complete: function (XMLHttpRequest, textStatus) {
            if(textStatus == 'timeout'){
                if (error_callback != null && error_callback != "") {            
                    error_callback();
                };
            }
        },
        //调用出错执行的函数
        error: function () {
            console.log("error");  //请求出错处理
        }
    });
}

三、XMLHTTP 的 readyState 值含义:

  • 0-未初始化,即尚未调用 open。
  • 1-初始化,即尚未调用 send。
  • 2-发送数据,即已经调用 send。
  • 3-数据传送中。
  • 4-完成。

四、响应错误代码

  • 400 无法解析此请求。
  • 403 禁止访问:访问被拒绝。
  • 404 找不到文件或目录。
  • 405 用于访问该页的 HTTP 动作未被许可。
  • 406 客户端浏览器不接受所请求页面的 MIME 类型。
  • 407 Web 服务器需要初始的代理验证。
  • 410 文件已删除。
  • 412 客户端设置的前提条件在 Web 服务器上评估时失败。
  • 414 请求 URL 太大,因此在 Web 服务器上不接受该 URL。
  • 500 服务器内部错误。

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐