我有一台服务器返回状态代码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”。
欢迎所有线索
答案 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)