有时发出一个请求,后端什么时候返回前端并不清楚。有可能是1秒,3秒甚至更长时间。因此有必要添加一个参数来设置等待的时间,如果在设定的时间内没有返回结果则放弃该次请求。

实现思路:发出请求后指定一个时间,如超过该时间没有返回结果则忽略。window对象的setTimeout方法再次起作用了(setTimeout能解决很多IE下古怪的bug)

代码如下:

var timeout = opt.timeout || 0;//指定是否启用请求超时处理,不传参数timeout则忽略var isTimeout = false; //一个标志位,是否超时if(timeout>0){setTimeout(function(){isTimeout = true;},timeout);
}//最后将isTimeout用在onreadystatechange处理中
xhr.onreadystatechange = function(){if (xhr.readyState == 4 && !isTimeout){//当请求完成,且没有超时才处理结果_onStateChange(xhr, type, success, failure);}else{}
};

调用如下

Ajax.text('../servlet/Ajax',{timeout : 2000,success : function(){},failure : function(){}
});

后台我用servlet,直接sleep下即可模拟超时(sleep时间3000大于timeout的设置2000)

try {Thread.sleep(3000);
} catch (InterruptedException e) {e.printStackTrace();
}
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("request success");
out.flush();
out.close();

请求超时后,success/failure都不会被调用。这样处理有一定的合理性,但缺陷也显而易见,用户不知是超时了还是其它什么错误。下一篇将有所改进。

相关:

ajax_04.zip

https://github.com/snandy/io

检查超时-Ajax之四相关推荐

  1. 解决spring-security session超时 Ajax 请求没有重定向的问题

    解决spring-security session超时 Ajax 请求没有重定向的问题 参考文章: (1)解决spring-security session超时 Ajax 请求没有重定向的问题 (2) ...

  2. AJAX之四 Ajax控件工具集

    [学习目标] F    理解并掌握ScriptManager控件的使用 F    了解ScriptManager控件的使用 F    理解并掌握Timer控件的使用 F    理解并掌握UpdateP ...

  3. ajax请求如何判断超时,ajax请求超时判断(转载)

    ajax请求时有个参数可以借鉴一下 var ajaxTimeOut = $.ajax({ url:'', //请求的URL timeout : 1000, //超时时间设置,单位毫秒 type : ' ...

  4. 单点登录,session超时, ajax链接处理

    1 错误场景 cas session 超时问题:XMLHttpRequest cannot loadhttps://www.hf.com:8443/cas/login?service=http%3A% ...

  5. (五)SSO之CAS框架单点登录, session超时, ajax链接处理

    1 错误场景 cas session 超时问题:XMLHttpRequest cannot loadhttps://www.hf.com:8443/cas/login?service=http%3A% ...

  6. LwIP 之四 超时处理/定时器(timeouts.c/h)

      目前,网络上多数文章所使用的LwIP版本为1.4.1.最新版本为2.0.3.从1.4.1到2.0.3(貌似从2.0.0开始),LwIP的源码有了一定的变化,甚至于源码的文件结构也不一样,内部的一些 ...

  7. javascript进阶——Ajax

    统的Web 页面和应用中,用户每点击页面上的某个部分,浏览器就会向服务器发出一个请求,等待服务器做出响应,然后返回一个完整新网页,但在大多数情况下用户不得不忍受页面闪烁和长时间的等待.随着Web技术的 ...

  8. ARP的超时重新请求

    文章目录 1 原理 2 代码实现 1 原理 问题:ARP表项是否一直有效? 实现原理如下: 2 代码实现 先看下代码组织结构: prot_pcap.c中增加如下代码: /*** 获取自程序启动以来,过 ...

  9. 第一百七十四节,jQuery,Ajax进阶

    jQuery,Ajax进阶 学习要点: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 在 Ajax 课程中,我们了解了最基本的异步处理方式.本章,我 ...

最新文章

  1. 中序遍历的非递归算法
  2. ARP攻击实战之WinArpAttacker
  3. 公司年会在民俗文化村举行
  4. STS安装 activiti-designer-5.18.0插件
  5. 软件设计师 - 算法思想
  6. 爬虫-请求类对象的创建-Request类
  7. django+mysql+插入数据库网页展示内容
  8. Android 系统(177)---Android消息机制分析:Handler、Looper、MessageQueue源码分析
  9. 区块链 智能合约是有状态的吗
  10. MSI Center局域网管理器开启导致电脑网络质量变差、网速低
  11. lro gro_斯威夫特:Gro吟M
  12. 计算机控制面板设置密码,如何设置修改电脑的开机密码
  13. 【转】android builder.setPositiveButton处 报错
  14. STM32的Flash
  15. 儿童节活动需要的设计感海报
  16. 解决Pycharm出现的Debug无法正常运行(Frames are not available)的问题
  17. python简单实例-python简单案例
  18. 中鑫优配谨防黑周四出现这种走势!
  19. 什么是网络安全?网络安全包括哪几个方面?
  20. u盘安装linux戴尔boot设置,戴尔台式机bios设置,详细教您如何安装U盘启动

热门文章

  1. Spring Boot第四篇:SpringBoot 整合JPA
  2. 一天1300 Star量,GitHub上新官方命令行工具
  3. 512块A100,AlphaFold训练时间从11天压缩至67小时
  4. 精度45.9%,推理速度72.9FPS,百度飞桨推出工业级目标检测模型 PP-YOLO
  5. 35国,14年,世界最大科学项目,「人造太阳」即将诞生!
  6. YOLOv5 它来了!基于 PyTorch,体积比 YOLOv4 小 90%,速度却超 2 倍!
  7. 大佬算法校招经验总结(拼多多、小米、华为、百度等)
  8. PyTorch常用代码段整理合集,建议收藏!
  9. 用Python分析了1w四六级数据,教你如何通过四六级!
  10. 导致美国大范围网络瘫痪的Mirai僵尸网络