【问题标题】:Catch exceptions in jQuery在 jQuery 中捕获异常
【发布时间】:2010-10-03 11:31:07
【问题描述】:

我有以下代码:

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

有什么线索吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这是一个有用的 sn-p 与 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 调用或回调出现任何问题)。错误消息不是最大的,但至少您不必再被蒙在鼓里了。

      Credit goes to Jesse Skinner

      【讨论】:

        【解决方案3】:

        好,我猜javascript终于也支持了,像这样

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

        【讨论】:

          【解决方案4】:

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

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

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

          【讨论】:

            猜你喜欢
            • 2012-05-31
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-07-10
            • 1970-01-01
            • 2011-05-29
            • 2011-07-02
            • 2021-08-19
            相关资源
            最近更新 更多