如何获得jQuery $ .ajax错误响应文本?

我正在发送一个错误响应给我的jQuery。 但是,我无法得到响应文本(在下面的例子中,这将是去海滩

jQuery所说的唯一的事情就是“错误”。

查看这个例子的细节:

PHP

<? header('HTTP/1.1 500 Internal Server Error'); print "Gone to the beach" ?> 

jQuery的

 $.ajax({ type: "post", data: {id: 0}, cache: false, url: "doIt.php", dataType: "text", error: function (request, error) { console.log(arguments); alert(" Can't do because: " + error); }, success: function () { alert(" Done ! "); } }); 

现在我的结果是:

日志:

  [XMLHttpRequest readyState=4 status=500, "error", undefined] 

警报:

不能这样做:错误

有任何想法吗?

尝试:

 error: function(xhr, status, error) { var err = eval("(" + xhr.responseText + ")"); alert(err.Message); } 

查看请求参数的responseText属性。

对我而言,这只是工作:

 error: function(xhr, status, error) { alert(xhr.responseText); } 

这是为我工作

  function showErrorMessage(xhr, status, error) { if (xhr.responseText != "") { var jsonResponseText = $.parseJSON(xhr.responseText); var jsonResponseStatus = ''; var message = ''; $.each(jsonResponseText, function(name, val) { if (name == "ResponseStatus") { jsonResponseStatus = $.parseJSON(JSON.stringify(val)); $.each(jsonResponseStatus, function(name2, val2) { if (name2 == "Message") { message = val2; } }); } }); alert(message); } } 

最终由这个其他答案build议, 这是在这个网页上的评论 :

 error: function(xhr, status, error) { var err = JSON.parse(xhr.responseText); alert(err.Message); } 

你也可以尝试一下:

 $(document).ajaxError( function (event, jqXHR, ajaxSettings, thrownError) { alert('[event:' + event + '], [jqXHR:' + jqXHR + '], [ajaxSettings:' + ajaxSettings + '], [thrownError:' + thrownError + '])'); }); 

如果你想得到带有行号的语法错误 ,使用这个

 error: function(xhr, status, error) { alert(error); } 

这将允许您看到整个响应不仅仅是“responseText”值

 error: function(xhr, status, error) { var acc = [] $.each(xhr, function(index, value) { acc.push(index + ': ' + value); }); alert(JSON.stringify(acc)); } 

如果您没有networking错误,并且希望从后端发出错误,例如没有足够的权限,请使用200和错误消息来响应您的响应。 然后在你的成功处理程序中检查data.status =='错误'