繁体   English   中英

在jQuery中捕获异常

[英]Catch exceptions in jQuery

我有以下代码:

<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但没有工作......

任何线索?

请改用$.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
    }
});

这是一个有用的片段,用于跟踪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);
    }
});

如果您将Ajax与jQuery一起使用,您可能已经注意到,当出现问题时,您不会收到任何错误消息。 即使你的回调函数中存在重大错误,jQuery也会默默地失败,扫除地毯下的任何错误,让你对刚刚发生的事情毫无头绪。

运行此代码后,您将开始在Firebug控制台中收到错误消息(如果您的Ajax调用或回调有任何中断)。 错误信息不是最好的,但至少你不必再呆在黑暗中了。

归功于Jesse Skinner

好的,我猜javascript支持终于也是这样的

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

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

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

但是对于ajax调用这可能是行不通的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM