今天在我们的应用程序中看到了这个错误。我们在网页的右上角有一个小方框。它每分钟都会更新。它的作用是通过内联网向我们的每个医院合作伙伴发出jsonp呼叫并提取最新消息。这个问题并不经常发生。我实际上发现了错误发生的原因。
Uncaught TypeError: jQuery11020382352269484832883_1441911920555 is not a function
当jsonp请求在jsonp超时指定的时间内没有从jsonp服务获得响应时,此错误会显示在控制台中。
我用try-catch包装了我们的端点调用,但它仍在吐出该错误。我想摆脱" Uncaught TypeError"并显示我们自己的自定义错误。
答案 0 :(得分:1)
当您使用jQuery并且http请求是异步时,您无法使用try-catch
处理此类错误,这将仅捕获请求调用的错误,而不是整个进程。
一些研究给了我这个链接:http://bugs.jquery.com/ticket/8744
实际上,当请求超时时,不应该调用jsonpCallback函数,它似乎是一个浏览器错误:http://bugs.jquery.com/ticket/8744#comment:2 https://bugzilla.mozilla.org/show_bug.cgi?id=707154
jQuery bug支持(e.marin.izquierdo
)中的某个人提供了一个可能的解决方案来处理"处理"这个错误。 (我改变它有点删除不相关的东西)
var auxTime = new Date();
var jQueryCallbackRandom = auxTime.getTime();
var callParameters = {
url: 'http://jsfiddle.net/echo/jsonp/',
timeout: 5,
dataType: "jsonp",
data: { echo: "Hello World!" },
jsonpCallback: "jQueryRandom_" + jQueryCallbackRandom,
success: function(){
console.log("success");
},
error: function(jqXHR, textStatus){
console.log("failed with error: " + textStatus);
window["jQueryRandom_" + jQueryCallbackRandom] = function() {
window["jQueryRandom_" + jQueryCallbackRandom] = null;
};
}
};
$.ajax(callParameters);
它在错误监听器中创建jsonpCallback以避免错误,但要执行此操作,您需要知道jsonpCallback
的名称。