当前位置:编程学习 > JS >>

原生Ajax设置超时时间和JQuery两种写法

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", "https://www.yizuotu.net/", 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:  "https://www.yizuotu.com/", //提交的网址
        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 服务器内部错误。
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,