【问题标题】:Redirect me to default Error Page On jQuery .ajax() error:将我重定向到 jQuery .ajax() 错误时的默认错误页面:
【发布时间】:2012-01-03 16:56:01
【问题描述】:

我编写了一个小红宝石 Sinatra 应用程序。有时会抛出错误(例如,数据库连接不存在)。但是,默认索引页始终有效(无需数据库连接)。

我使用 jQuery 来处理触发数据创建的请求。但是当发生后端错误时,我想显示默认错误页面。这不起作用,因为 jQuery 创建请求并忽略错误(因此当数据库不可用时不会发生任何事情)。我的代码如下所示:

$(document).ready(function() {  

  $("form").bind("submit", function(event) {
    event.preventDefault();

    $.ajax({
        type:"POST",
        url:"/new",
        data:$("#form").serialize(),
        dataType:"json",
        success:function(data){
         // handling of input data
        },
        error:function(xhr, ajaxOptions, thrownError){ 
          // show default error page
        }
      });
  });
});

通过这样做,我设法实现了我想要的:

    error:function(xhr, ajaxOptions, thrownError){ 
      alert something;
    }

但我想这只是因为语法错误而起作用(正确的语法应该是 alert("something");)

是否有正确的方法重定向到默认错误页面?

【问题讨论】:

    标签: jquery ruby ajax sinatra


    【解决方案1】:

    查看默认的 ajax 设置,因此您不必为每个 Ajax 请求都这样做。 http://api.jquery.com/jQuery.ajaxSetup/

    $.ajaxSetup({
        error : function(){
            document.location = "/errorpage";
        }
     });
    

    如果您有 ajax 请求并且您的数据库不可用,则不会出现 Ajax 错误,因为仍然可以调用该页面。也许您必须检查成功页面上的响应是否包含“错误”或其他内容?或者将标头代码更改为其他代码然后 200 以便调用 Ajax 请求的错误。

    【讨论】:

      【解决方案2】:

      试试这个:

      error:function(xhr, ajaxOptions, thrownError){ 
          // show default error page
          window.location.assign("error.html");
      }
      

      【讨论】:

        猜你喜欢
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多