为了账号安全,请及时绑定邮箱和手机立即绑定

确定$.ajax错误是否为超时

确定$.ajax错误是否为超时

慕容3067478 2019-07-11 15:50:21
确定$.ajax错误是否为超时我在利用jQuery.ajax( settings ).但是,我想知道是否有人玩过超时设置?我知道它基本上是用来指示请求的本地时间,但是如果达到超时,它能触发什么吗?还是干脆就不听回应了?阅读jQuery站点,我可以看到没有传递任何参数,因此它似乎是一个具有一种功能的简单设置。这很好。但是,如果到达超时,我希望触发警报或函数。在这种情况下,我可以看到错误设置不会被触发。这是我的片段:$("form#testform").submit(function(){   var allFormValues = $("form#testform").serialize();     $.ajax({     cache:false,     timeout:8000,  // I chose 8 secs for kicks     type:"POST",     url:"someurl.php",     data:allFormValues,     error:function(){ alert("some error occurred") },     success:function(response){ alert(response); }    });});有人知道如何在超时的情况下工作吗?
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

如果您的错误事件处理程序在超时使用三个参数(XMLHttpRequest、textStatus和Message),则状态Arg将是“超时值”。

根据jQuery文档:

第二个参数的可能值(除了NULL)是“超时值”、“错误”、“未修改”和“ParserError”。

那么,您可以相应地处理您的错误。

我创造了这个小提琴这说明了这一点。

$.ajax({
    url: "/ajax_json_echo/",
    type: "GET",
    dataType: "json",
    timeout: 1000,
    success: function(response) { alert(response); },
    error: function(xmlhttprequest, textstatus, message) {
        if(textstatus==="timeout") {
            alert("got timeout");
        } else {
            alert(textstatus);
        }
    }});

使用jsFiddle,您可以测试Ajax调用-它需要等待2秒才能响应。我将超时设置为1秒,因此它应该会出错,并将文本状态‘超时值’传回给错误处理程序。

希望这能帮上忙!


查看完整回答
反对 回复 2019-07-11
?
心有法竹

TA贡献1866条经验 获得超5个赞

(X)mlHttpRequest、(T)extStatus和(M)essage

查看完整回答
反对 回复 2019-07-11
  • 2 回答
  • 0 关注
  • 782 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信