当前位置: 首页 > 面试题库 >

检查jQuery ajax请求的状态

慎峻
2023-03-14
问题内容

似乎只有在ajax请求能够从服务器获得某些响应时,才会触发成功,错误和完整的回调。

因此,如果我关闭服务器,则不会执行以下错误回调,并且请求将以静默方式失败。

$.ajax({
  type: "GET",
  url: "http://localhost:3000/",
  dataType: "script",
  success: function() {
    alert("success");
  },
  error: function() {
    alert("error");
  }
});

当根本无法访问服务器时,抛出错误的最佳方法是什么。

编辑-从我尝试过的内容来看,似乎jQuery的内置错误处理不适用于JSONP或dataType:“ script”。因此,我将尝试设置手动超时。

编辑-做了一些进一步的研究,看来不仅ajax错误回调不起作用,而且您无法使用dataType脚本或jsonp中止ajax请求,并且这些请求将忽略超时设置。

还有一个替代方法-jquery-
jsonp插件,但它使用了隐藏的iframe,我宁愿避免使用。因此,我决定按照以下建议创建手动超时。如果请求超时,您将无法中止请求,这意味着即使在超时后脚本仍可能加载,但是如果服务器不可用,至少会触发某些事件。


问题答案:

您可以使用setTimeout,并clearTimeout在完整的处理程序中将其清除。

var reqTimeout = setTimeout(function()
{
  alert("Request timed out.");
}, 5000);
var xhr = $.ajax({
  type: "GET",
  url: "http://localhost:3000/",
  dataType: "script",
  success: function() {
    alert("success");
  },
  error: function() {
    alert("error");        
  },
  complete: function() {
    clearTimeout(reqTimeout);
  }
});


 类似资料:
  • 我正在尝试使用JQuery在Ajax中向请求添加头。 以下是代码:- 然后我使用了要求(要求是chrome火狐插件,我们可以手动添加一个标题到请求)。 手动添加标题后:- 在这两个pics请求头中,“ACCESS-CONTROL-request-HEADERS”中都有x-auth-token,但第二个pic中有“x-auth-token”头和头值,而第一个pic中没有。 所以我的问题是如何使用JQ

  • 我正在使用Spring Security,我实现了UserDetailsService,它完美地处理了我的用户登录过程。 问题是:是否有标准的方法来检查每个请求的数据库中的用户状态,以便如果用户的帐户状态更改为“锁定”或他的角色在他仍然登录时发生更改,应用程序会阻止他继续他的工作。 这里的问题是,我的自定义UserDetailsService类中的“public UserDetails loadU

  • 我们的堆栈使用主干作为客户端应用程序,使用Spring Boot作为RESTful API。 我们尝试使用OAuth2进行基本身份验证,用户提供用户名和密码。 我们使用Spring Security进行身份验证,使用jQuery$. ajax方法进行请求。但是,在我们甚至可以使用带有我们的秘密的POST标头进行授权之前,我们得到的响应是预飞行OPTIONS请求的401(未授权)状态。但是,我们可以

  • 问题内容: 如何检查jQuery.ajax()请求标头状态是否为“ 304未修改”? 通常返回,即使请求的标头是“ 304 Not Modified”。 并没有太大帮助,因为它中断了XHR数据请求。 问题答案: 如果不手动处理高速缓存头,则不可能。通常,XHR API无法提供304个响应: 对于由于用户代理生成的条件请求 而 产生的304未修改响应, 用户代理必须像服务器给出200 OK响应并提供

  • 问题内容: 这应该很容易。 我有一个脚本,在脚本中我想确定请求是否通过或方法到达。 正确的方法是什么? 我正在考虑使用这样的东西 但是我内心深处并不觉得这是正确的方法。任何的想法? 问题答案: 更好地使用:

  • 问题内容: 有没有一种方法可以检查Python中的请求是否为AJAX? 相当于PHP的? 问题答案: 如果AJAX框架在其请求中设置了X-Requested-With标头,则您将能够使用该标头来检测AJAX调用。这取决于客户端框架。 掌握HTTP标头取决于您选择的Python框架。在Django中,对象具有可以直接使用的方法。