我正在利用jQuery.ajax( settings )的魔力.

然而,我想知道是否有人经常使用超时设置?

我知道它基本上是用来为一个请求指定本地时间的,但是如果达到超时时间,它能触发任何东西吗?还是干脆停止倾听回应?

阅读jQuery站点,我可以看到没有传递任何参数,因此它看起来像是一个只有一个功能的简单设置.这很好.

但是,如果超时,我想触发一个alert 或一些功能.在本例中,我可以看到错误设置没有被触发.

以下是我的片段:

$("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); }
   });

});

有人知道如何在暂停的情况下更好地工作吗?

推荐答案

如果发生超时时错误事件处理程序接受三个参数(xmlhttprequest、textstatus和message),则状态参数将为"timeout".

根据jQuery documentation人:

第二个的可能值

你可以据此处理你的错误.

我创造了这fiddle个来证明这一点.

$.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);
        }
    }
});​

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

希望这能有所帮助!

Jquery相关问答推荐

ASP.NET Core 6 jQuery 验证不起作用

如何使 Bootstrap 轮播滑块使用移动左/右滑动

jQuery 与 javascript?

纯css关闭按钮

如何制作 AngularJS 指令来停止传播?

使用 jQuery 将行添加到表的 tbody

Ajax 更新后在 jQuery 中重新绑定事件(更新面板)

页面滚动后,jQuery可拖动在错误的位置显示助手

在不刷新页面的情况下更新网站的 CSS

如何在 jQuery 中为 getJSON 设置缓存 false?

jQuery中追加的相反

字符串化(转换为 JSON)具有循环引用的 JavaScript 对象

addClass - 可以在同一个 div 上添加多个类吗?

动态创建并提交表单

jQuery UI 中的 disableSelection 用于什么?

所有但不是jQuery Select 器

jQuery - 确定输入元素是文本框还是 Select 列表

jQuery ajax 成功回调函数定义

如何在 DOM 中移动 iFrame 而不会丢失其状态?

如何使用 jQuery 处理复选框的更改?