2011-11-22 128 views
2

我写了一个小红宝石Sinatra应用程序。有时会引发错误(例如,数据库连接不存在)。但是默认的索引页总是有效的(不需要数据库连接)。重定向到默认错误页面在jQuery .ajax()错误:

我用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; 
    } 

但我想这只是工作,因为语法错误的(正确的语法是警惕(“something”);)

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

回答

3

看看默认阿贾克斯设置,所以你没有必要为你做每一个Ajax请求做到这一点。 http://api.jquery.com/jQuery.ajaxSetup/

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

如果你有一个Ajax请求,并且数据库不可用,没有的Ajax错误,因为该页面仍可以调用。也许你必须检查成功页面上的响应,如果它包含“错误”或什么的?或者将标题代码更改为另一个200,以便调用Ajax请求的错误。

0

试试这个:

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