!更新Kandy应用前请务必保证KandyApp为最新版!

jQuery ajax $.get或$.post 实现timeout超时设置的方法

由 吉光片羽 在 2 年前(2015-06-05)

钱端攻城狮
jQuery ajax $.get或$.post 实现timeout超时设置的方法

标题取得我真纠结……很高兴你看到这篇文章,因为你不用再去百度翻页了,没错,$.get和$.post没有timeout的选项,解决办法很简单,改成ajax。

别急,开个玩笑而已,而且,这是最简单的方法,只需在complete回调函数里对TextStatus(第二个参数,此处简写为status)做个判断就行,代码如下:

$.ajax({
  //其他参数已省...
  timeout:5000, //超时时间,考虑到网络问题,5秒还是比较合理的
  complete:function(XHR,TextStatus){
    if(TextStatus=='timeout') //超时啦,干点什么呗
  }
});

好吧,其实我们的重点是非ajax形式的方法,在get和post的情况下要怎么实现呢?我这没有一个最好的方法,但有一个最笨的方法,并且用在了Z-Blog的KandyDigg顶踩插件中,我想你也一定考虑过:

setTimeout

你没瞎,就是这玩意,造起来吧:

var timeout=setTimeout(function(){
  //超时啦,干点什么 
  },
  5000 //超时时间,考虑到网络问题,5秒还是比较合理的
);
$.post(url,function(data){
  if(timeout){ //清除定时器
    clearTimeout(timeout);
    timeout=null;
  }
  //该干嘛干嘛
});

多烂的代码,希望对你有帮助!如有不妥,恳请评论指出,我一定好好悔改,谢谢!

最后补充一点,据说timeout属性貌似是跟着浏览器来的,每个浏览器的时限都不一样,求考证。

相关文章 Related Posts

发表评论 Comment

名称

邮箱

主页

访客 访客 2 年前(2015-09-10) | 回复 【热评】很好63
吉光片羽 吉光片羽 2 年前(2015-11-08) | 回复 有用?04
访客 访客 10 个月前(2017-04-17) | 回复 循环请求,每次请求持续5秒怎么实现00
Jerry Jerry 2 个月前(2017-12-15) | 回复 把POST进"方法"里面,超时执行POST“方法”,递归原理00
子牙土蜂蜜 子牙土蜂蜜 2 年前(2016-02-09) | 回复 学习03