jQuery Form Plugin - 不会在内部服务器错误上调用错误回调(500)

时间:2012-05-09 17:37:43

标签: javascript jquery ajax jquery-forms-plugin

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

jQuery版本:1.7.1
jQuery Form版本:2011年3月2日 server 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”。

欢迎所有线索

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

首先,500内部服务器错误是一个非常通用的HTTP状态代码,这意味着网站服务器上出现了问题,但服务器无法确定具体问题是什么。

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

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

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

有关未能处理500错误的更多信息: Handle 500 errors in JSON (jQuery)

也检查一下: jquery ajax ignores 500 status error