捕获jQuery ajax异常的问题
我想做的是抓住所有的错误,我自己处理 但是当jQuery.ajax()上出现错误时,我可以知道错误选项上是否有错误。但我的window.OneError事件无法捕捉到它捕获jQuery ajax异常的问题,jquery,ajax,Jquery,Ajax,我想做的是抓住所有的错误,我自己处理 但是当jQuery.ajax()上出现错误时,我可以知道错误选项上是否有错误。但我的window.OneError事件无法捕捉到它 window.onerror = function(e) { console.log("i was here! ERROR: ", e); console.log("-----------"); return true; //dont show errors on console } $(functio
window.onerror = function(e) {
console.log("i was here! ERROR: ", e);
console.log("-----------");
return true; //dont show errors on console
}
$(function() {
$.ajax({
url: "asdasdasd/as/da/sdtest/asdasd",
error: function() {
// ok i know here is an error and it catches on my window.onerror. BUT look at your console, still have a GET error. That error I want to handle. Can be with try/catch or inside the window.onerror. I want that Exception object. Not this one that I created.
throw new Error("it catches, but still have errors on my console");
}
});
test[0].test = "it fails";
});
您可以在这里测试:错误函数接受三个参数,
error(jqXHR、textStatus、errorshown)
jqXHR是XMLHTTPRequest对象,textStatus是字符串,例如超时
或中止
,而ErrorRown是原始错误消息,例如找不到或内部服务器错误
如果您愿意,您可以直接阅读错误部分,并阅读更多相关内容。
运行时脚本错误的事件处理程序
在您的情况下,脚本中没有运行时错误。脚本可以,但请求中有一些错误。基本上,不会抛出任何异常。在jQuery内部会有类似的内容(它不是完全来自jQuery代码,但它将是类似的):
基本上,404并不是浏览器的例外
你可以试试看
它将捕获ajax需求中发生的所有错误
同时,如果您设置$.ajax({…数据类型:'json'.})
并在响应中获得HTML(解析响应时会发生错误),它可能会抛出一个错误,该错误将被窗口.onerror
捕获。您希望得到什么?不,我在这里!错误:未捕获错误:它捕获,但在我的控制台上仍有错误
?或者什么?你看到了吗:获取404(未找到)。这就是我想在window.onerror或try/catch中处理的问题。我需要异常对象。堆栈中存在此错误。我想得到StackTrace。使用我的错误函数抛出新的错误,我不能
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState != 4) return
if (xmlhttp.status == 200) {
// Everything is ок
...
alert(xmlhttp.responseText);
...
} else {
handleError(xmlhttp.statusText) // Something went wrong, error handler called
}
}
xmlhttp.send();
function handleError(message) {
alert("Error: "+message)
}