在jQuery中捕获异常

时间:2009-01-26 01:23:11

标签: asp.net javascript jquery ajax error-handling

我有以下代码:

<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但是没有用...

有任何线索吗?

4 个答案:

答案 0 :(得分:14)

请改用$.ajax()方法。它有一个错误的钩子。

For example

$.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调用或回调有任何中断)。错误消息不是最好的,但至少你不必再呆在黑暗中了。

Credit goes to Jesse Skinner

答案 2 :(得分:2)

好的,我猜javascript也支持,就像这样

try{
     main code...
}catch(err){
     error ocurred...
}finally{
     do this anyway...
}

答案 3 :(得分:0)

在你的所有js代码周围放一个包装器:

           try
           {
       ... js code 
              }
         catch(err)
        {
         alert(err.toString()); 
        }

但是对于ajax调用,这可能不起作用。