我有以下代码:
<script type="text/javascript">
$(document).ready(function() {
$("#Save").click(function() {
$.post("url", {
"data": "data"
}, function(data) {
alert(data);
});
});
});
</script>
我正在测试这个脚本,我正在做的其中一个测试是,我只关闭了asp.net Web开发服务器,然后单击按钮。
IE说“访问被拒绝”错误,我想捕获此处发生的任何错误,并在这种情况下向用户显示友好消息。
我尝试使用try / catch但是没有用...
有任何线索吗?
答案 0 :(得分:14)
请改用$.ajax()
方法。它有一个错误的钩子。
$.ajax({
url: 'document.xml',
type: 'GET',
dataType: 'xml',
timeout: 1000,
error: function(){
alert('Error loading XML document');
},
success: function(xml){
// do something with xml
}
});
答案 1 :(得分:7)
这是一个有用的代码段,用于跟踪FireBug一起跟踪任何jquery ajax错误。
// Displays any ajax errors in the Firebug console instead of hiding them
$(document).ajaxError(function(){
if (window.console && window.console.error) {
console.error(arguments);
}
});
如果你在jQuery中使用Ajax,你可能已经注意到在出现问题时你没有收到任何错误消息。即使你的回调函数中存在重大错误,jQuery也会默默地失败,扫除地毯下的任何错误,让你对刚刚发生的事情一无所知。
运行此代码后,您将开始在Firebug控制台中收到错误消息(如果您的Ajax调用或回调有任何中断)。错误消息不是最好的,但至少你不必再呆在黑暗中了。
答案 2 :(得分:2)
try{
main code...
}catch(err){
error ocurred...
}finally{
do this anyway...
}
答案 3 :(得分:0)
在你的所有js代码周围放一个包装器:
try
{
... js code
}
catch(err)
{
alert(err.toString());
}
但是对于ajax调用,这可能不起作用。