如何在Ajax错误上抛出404错误以便指向默认的404行为?

时间:2012-07-26 22:38:42

标签: javascript jquery asp.net-mvc

使用:ASP.NET MVC 3,JavaScript,jQuery。 web.config文件设置为处理HTTP 404错误。具体来说,它将提供无效URL的正确重定向,如www.mysite.com/INVALIDURL(即未找到404页面)

问题:有没有办法在Ajax错误中默认相同的行为?或者换句话说,如何在ajax错误中抛出404'Page not found'响应。

$.ajax ({ ... })
  .error(function (jqXHR, textStatus, errorThrown) {
     // throw 404 Page not found HTTP error
  }

Edit1:我要找的最终结果是在Ajax错误时提供“找不到页面”显示

Edit2:我已经在web.config文件中有一个重定向设置,如此

  <system.webServer>
    <httpErrors errorMode="Custom">
      <remove statusCode="404" />
      <error statusCode="404" path="/error/404" responseMode="ExecuteURL" />
    </httpErrors>
  </system.webServer>

我希望ajax.error默认为该行为,是否可能?

2 个答案:

答案 0 :(得分:0)

所以 - 你想在ajax错误上重定向到404页面?如上所述,您不能抛出404,但您可以重定向到另一个页面。

$.ajax ({ ... })
  .error(function (jqXHR, textStatus, errorThrown) {
     window.location.href = '/My404ErrorPage';
  }

修改

如果您不希望更改URL,您将需要使用模式对话框/警告框/特殊div来向用户传达此信息,并将您要使用的消息放入其中那。下面假设NotFound是你网页上某个div的id,并且第一部分利用了jquery UI,第二部分是普通ol'警告框。

$.ajax ({ ... })
  .error(function (jqXHR, textStatus, errorThrown) {
     $('#NotFound').html('Some error message');
     $('#NotFound').Dialog();
     //OR you could do
     alert('Some error message');
  }

答案 1 :(得分:0)

尝试使用“ajaxSetup”将js重定向设置为错误页面。例如:

$.ajaxSetup({
    beforeSend  : function(){showLoader()},
    complete    : function(){hideLoader()},
    error       : function(){redirTo404()}
});

所以它将使用它作为所有ajax调用的默认值