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

How to throw a 404 error on Ajax error in order to direct to default 404 behavior?

本文关键字:错误 默认 404行 Ajax      更新时间:2024-03-01

工作环境:ASP.NET MVC 3、JavaScript、jQuery。web.config文件设置为处理HTTP 404错误。具体而言,它将在www.mysite.com/INVALIDURL(即未找到404页面)等无效URL时提供正确的重定向

问题:有没有一种方法可以默认Ajax错误中的相同行为?换句话说,如何在ajax错误中抛出404"未找到页面"响应。

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

第1版:我想要的最终结果是在Ajax错误时提供一个"找不到页面"的显示

第2版:我在web.config文件中已经有了一个重定向设置,就像一样

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

我希望ajax.error默认为该行为,有可能吗?

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

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

编辑

如果你不想更改URL,你很可能需要使用模式对话框/警报框/特殊div来向用户传达这些信息,并将你想要使用的消息放在其中。下面假设NotFound是页面上某个地方的div的id,并在第一部分使用了jquery UI,在第二部分使用了普通的ol’alert框。

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

尝试使用"ajaxSetup"设置js重定向到错误页面。例如:

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

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