繁体   English   中英

处理AJAX错误(本地JS)

[英]Handling AJAX error (Native JS)

我正在尝试使用以下代码来处理AJAX错误,但无法正常工作

function ajaxPost(url, data, success, error) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status === 200) {
            if (typeof success === "function") {
                success(xmlhttp.responseText);
            }
        }else if([404, 500 , 503, 504 ].indexOf(xmlhttp.status) > -1){
            if(typeof error === "function"){
                error();    
            }
        }
    }
    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    xmlhttp.send(JSON.stringify(data));
}

我是否还缺少[404, 500 , 503, 504 ]其他状态代码? 我并没有改变自己的想法,我已经使用本机JavaScript编写了整个DOM,并且不想为AJAX包含80KB的文件。 请帮我。

上面的函数已成功将数据发布到服务器,但在服务器不可用时未能引发错误。 请帮我解决这个问题。

          // try this code

          xmlhttp.onreadystatechange = function() {
                    if (xmlhttp.readyState === 4) {

                        var resp=eval('('+xmlhttp.responseText+')');


                        if( xmlhttp.status == 200 ) {

                            // success

                        } else if( xmlhttp.status >= 500 ) {

                            // internal server error

                        } else if ( xmlhttp.status >= 402 && xmlhttp.status <= 420 ) {

                           // error

                        } else if( xmlhttp.status == 400 || xmlhttp.status == 401 ) {

                           // bad request & unauthorized error

                        }

                    }
                };

您总是可以检查任何不成功的内容,例如:

function ajaxPost(url, data, success, error) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status === 200) {
            if (typeof success === "function") {
                success(xmlhttp.responseText);
            }
        }else if(typeof error === "function" && (xmlhttp.status > 299 || xmlhttp.status < 200)){
            error();    
        }
    }
    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');
    xmlhttp.send(JSON.stringify(data));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM