3

我有一个服务器返回状态码 500,我的 jQuery 表单调用成功回调而不是错误回调。

jQuery 版本:1.7.1
jQuery 表单版本:2.73 2011 年 3 月
服务器 apache2

这些是一些代码片段:

var options =
{
       error         : on_upload_error
    ,  success       : on_upload_succes
};

// bind form using 'ajaxForm'
$( '#upload-form' ).ajaxForm( options );



function on_upload_error( jqXHR, textStatus, errorThrown )
{
    console.log( "in error function" );
}




function on_upload_succes( responseText, statusText, xhr, form )
{
    console.log( 'responsText: ' + responseText );
    console.log( 'statusText: ' + statusText );
    console.log( xhr );
    console.log( form );

    // ....
}

服务器的标头对我来说似乎是正确的:

HTTP/1.1 500 Internal Server Error
Date: Wed, 09 May 2012 18:35:11 GMT
Server: Apache/2.2.16 (Debian)
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 405
Connection: close
Content-Type: text/html; charset=iso-8859-1

我无法让它显示“错误功能”。最重要的是,返回给 on_upload_success 的 statusText 参数包含一个字符串“success”。

欢迎所有线索

4

2 回答 2

0

首先,500 Internal Server Error 是一个非常普遍的 HTTP 状态代码,表示网站的服务器出现了问题,但服务器无法更具体地说明问题所在。

众所周知,jquery 在发生 500 内部错误时不会调用错误函数,因此通常的处理方法是使用状态码

$.ajax({
    statusCode: {
        500: function() {
          alert("Something went wrong !");
        }
      }
   });

有关使用状态码的更多信息,请查看 jquery api: https ://api.jquery.com/jQuery.ajax/

有关无法处理 500 错误的更多信息: 在 JSON (jQuery) 中处理 500 错误

还要检查一下: jquery ajax ig​​nores 500 status error

于 2014-02-22T04:24:15.727 回答
0

您应该使用alert(xhr.responseText);来查看相关的错误消息。

于 2014-02-22T04:09:11.300 回答