Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 出现错误时未调用jQuery AJAX错误回调_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 出现错误时未调用jQuery AJAX错误回调

Javascript 出现错误时未调用jQuery AJAX错误回调,javascript,jquery,ajax,Javascript,Jquery,Ajax,我目前正试图从我的服务器实现HTTP 413:Request实体过大错误的处理。我所做的是: $.ajax({ url: "submit.php", data: { "data": POSTData }, success: function(response, statusText, XHR) { console.log(XHR.status + ": " + response); resolve(); // res

我目前正试图从我的服务器实现HTTP 413:Request实体过大错误的处理。我所做的是:

$.ajax({
    url: "submit.php",
    data: {
        "data": POSTData
    },
    success: function(response, statusText, XHR) {
        console.log(XHR.status + ": " + response);
        resolve(); // resolve the promise and continue on with execution
    },
    // Added this part:
    error: function(response, statusText, XHR) {
        if(XHR.status === 413) {
            // Request entity too large
            // To solve this we split the data we want to upload into several smaller partitions
            // and upload them sequentially

            console.log("Error 413: Request entity too large. Splitting the data into partitions...");

            // handling code below

            // blahblahblah
        }
    },
    method: "POST"
});

但我的控制台并没有触发错误回调,而是抛出一个错误(它说是413),好像并没有处理程序。如何实现此功能?

错误回调的方法签名错误。看

根据这些文件,正确的签名是: 函数(jqXHR jqXHR、字符串textStatus、字符串ERRORSHORN)

因此,在您的示例中,XHR.status不存在,因为您所称的XHR实际上是一个字符串

试试这个:

 error: function (jqXHR, textStatus, errorThrown) {
    if(jqXHR.status === 413) {
        // Request entity too large
        // To solve this we split the data we want to upload into several smaller partitions
        // and upload them sequentially

        console.log("Error 413: Request entity too large. Splitting the data into partitions...");

        // handling code below

        // blahblahblah
    }
},

我强烈怀疑正在调用错误回调,但因为在if语句之外没有代码,所以看不到任何内容。

您可以在一个位置只使用一次来处理此类错误。。通过这种方式,您可以处理的不仅仅是
HTTP413

代码:


试着检查一下这个:或者这个@karacsi_maci谢谢,这绝对是一个不错的选择。如果可以的话,我宁愿在客户端处理它,但是如果证明太难,那么我将不得不求助于更改服务器设置。谢谢!我试试看。我只是假设
error
的签名与
success
的签名相同……太棒了!我仍然在控制台中看到错误,但至少现在回调正在启动。非常感谢。控制台错误说明了什么?大多数浏览器在控制台中报告HTTP错误,这是理所当然的,它实际上不在您的控制范围内。错误回调的目的是让应用程序能够优雅地处理它,而不是消除控制台错误。另外,如果答案有帮助,请不要忘记将其标记为已接受:-)这是一个很好的解决方案,虽然它不适合我当前的环境,我想处理我当时和那里的一些数据,但它肯定是我稍后要注意的一个特性。
$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 0) {
                console.log('Not connect.n Verify Network.');
            } else if (jqXHR.status == 404) {
                console.log('Requested page not found. [404]');
            } else if (jqXHR.status == 413) {
                console.log('Error [413]: Request entity too large. Splitting the data into partitions...');
            } else if (jqXHR.status == 500) {
                console.log('Internal Server Error [500].');
            } else if (exception === 'parsererror') {
                console.log('Requested JSON parse failed.');
            } else if (exception === 'timeout') {
                console.log('Time out error.');
            } else if (exception === 'abort') {
                console.log('Ajax request aborted.');
            } else {
                console.log('Uncaught Error.n' + jqXHR.responseText);
            }
        }
    });
});