如何获得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 =='错误'