jQuery的ajax模块封装了非常强大的功能,有时候我们在发送一个ajax请求的时候希望能有一个超时的时间,想让程序在一段时间请求不到数据时做出一些反馈。幸运的是jQuery为我们提供了这样的参数:timeout。今天试了一下,做个记录。

  首先在试验之前,有一个一直搞不明白的东西,那就是默认的超时时间是多少?这个配置在到底在什么地方设置。jQuery中?还是apache中?PHP中?

  经过一番搜索,暂得到如下结论:

  ①jQuery没有默认的超时时间,只可以通过参数来配置;

  ②apache2的默认超时时间是300秒,但是我在httpd.conf中设置Timeout 10,压根没起到作用,不明白是怎么回事

  ③php.ini中,只找到一个max_execution_time来配置脚本最长执行时间,貌似也没什么关系

  智商捉急。。。哪位高手知道,一定告诉一下我啊~~

  下面来看jQuery中的timeout参数,值为Number类型,单位为毫秒。为了在超时的时候执行我们定义好的处理函数,可以把它放在error参数中,如下代码:

$.ajax({
url : 's.php',
timeout : 3000,
error : function(xhr,textStatus){
console.log('error:'+textStatus);
},
});

  s.php中的内容为sleep(100)。这样在3秒后会输出error:timeout,textStatus即为错误的内容。这个还是很用的,如果你的error函数中还要进行其他处理,为了不与超时混在一起,可以这么写:

error : function(xhr,textStatus){
if(textStatus=='timeout'){
//处理超时的逻辑
}
else{
//其他错误的逻辑
}
}

  还可以把函数写在complete中,因为无论success还是error,complete函数都会执行。

  这下就可以轻松为超时指定动作了。不过在手工之前呢我还要小小的辟谣一下,因为在网上搜索文章的时候,有人如此描述timeout参数:会覆盖掉全局的设置。看到这句我顿时菊花一紧,难道我在这里设一次,页面上再用$.ajax的时候都会在3秒后超时?跑去官网一看文档,原句子是这么写的:“This will override any global timeout set with$.ajaxSetup().”,原来是会覆盖掉$.ajaxSetup()中的设置,如果我压根就没用$.ajaxSetup()这个函数,便什么事都没有。

为jQuery的$.ajax设置超时时间的更多相关文章

  1. C# UdpClient 设置超时时间

    /********************************************************************** * C# UdpClient 设置超时时间 * 说明: ...

  2. mongodb3.6 (五)net 客户端访问mongodb设置超时时间踩过的“坑”

    前言 在上一篇文章中,我们有提到net访问mongodb连接超时默认为30秒,这个时间在实际项目中肯定是太长的.而MongoClientSettings 也确是提供了超时属性,如下图: 可实际使用中, ...

  3. Go基础系列:为select设置超时时间

    Go channel系列: channel入门 为select设置超时时间 nil channel用法示例 双层channel用法示例 指定goroutine的执行顺序 After() 谁也无法保证某 ...

  4. GuzzleHttp 请求设置超时时间

    之前调用一个三方的 WEB API,大量的请求超时,导致 PHP 进程被占用完.整个网站一直报 504. 其中一个优化措施就是对三方 API 调用设置超时时间. use GuzzleHttp\Clie ...

  5. Mybatis设置超时时间

    Mybatis设置超时时间 mybatis如果不指定,默认超时时间是不做限制的,默认值为0.mybatis sql配置超时时间有两种方法: 1.全局配置 在mybatis配置文件的settings节点 ...

  6. winform设置超时时间

    ); //设置超时时间 var completedTask = await Task.WhenAny(new Task(async () => { );//执行的方法示例这里用延迟代替 }), ...

  7. HttpClient 如何设置超时时间

    今天分享一个巨坑,就是 HttpClient.这玩意有多坑呢?就是每个版本都变,近日笔者深受其害. 先看一下代码,我要发送请求调用一个c++接口. public static String doPos ...

  8. 爬虫学习笔记之为什么要设置超时时间,怎么设置(使用selenium)

    一个程序没有设置超时时间,就可以说是一段有缺陷的代码. 读取超时指的就是客户端等待服务器发送请求的时间.(特定地,它指的是客户端要等待服务器发送字节之间的时间.在 99.9% 的情况下这指的是服务器发 ...

  9. FFmpeg命令读取RTMP流如何设置超时时间

    子标题:FFmpeg命令录制RTMP流为FLV文件时如何设置超时时间 | FFmpeg命令如何解决录制产生阻塞的问题0x001: 前言 今天在测试程序时遇到两个问题.Q1:ffmpeg录制RTMP流并 ...

随机推荐

  1. iOS:xCode7版本运行xCode8.0的代码

    怎么在xCode7版本上运行xCode8.0的代码? 1.右键你的"LaunchScreen.sb"文件并用编辑器打开sb 2.删掉"<capability nam ...

  2. web测试

    1.验证码在不同浏览器兼容性(兼容测试) 2.登录时间cookie及session

  3. html table冻结列

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  4. Http协议与TCP协议简单理解(转)

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  5. 编辑器sublime text3和插件package control、Sidebar Enhancements插件安装

    (1)编辑器sublime text3的安装:选择自己需要的版本下载安装:http://www.sublimetext.com/3 (2)package control插件安装:https://pac ...

  6. hdoj 2022 海选女主角

    Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口.“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato ...

  7. $(function(){})、$(document).ready(function(){})....../ ready和onload的区别

    1.window.onload 当一个文档完全下载到浏览器中时,会触发 window.onload 事件. 这意味着页面上的全部元素对 javascript 而言都是可以访问的,这种情况对编写功能性的 ...

  8. jQuery基础_1

    jQuery事件的因果关系是怎么样的一个格式: $("button").click(function(){ }); [正式接触jQuery] (1)jQuery的书写步骤: 1.引 ...

  9. vs2010编辑器中找不到System.Web.Extensions.dll

    vs2010编辑器中想添加System.Web.Extensions.dll引用,却发现引用不了: 排除办法: 1.找到自己VS2010中System.Web.Extensions.dll的所在位置, ...

  10. .Net Web项目安装包制作 (一)

    来源:http://www.cnblogs.com/huxj/archive/2010/09/10/1823637.html