为jQuery的$.ajax设置超时时间

时间:2023-01-02 23:07:44

  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. Activity设置全屏的三种方法

    1.super.onCreate(savedInstanceState)方法之前调用:            setTheme(android.R.style.Theme_Light_NoTitleB ...

  2. ACM: 强化训练-Inversion Sequence-线段树 or STL·vector

    Inversion Sequence Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%lld & %llu D ...

  3. UIScroView 3倍的contentSize,左右Scroll时,懒惰加载View

    UIScroView 3倍的contentSize,左右Scroll时,懒惰添加左右的View 用途:分段加载数据 定义枚举: typedefenum { ViewPositionLeft = , V ...

  4. VC编译错误:一个或多个多重定义的符号

    1>uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" ( ...

  5. Android开发_关于如何屏蔽Home键

    今天在遇到一个要屏蔽Home键的问题,研究一上午终于解决,方法记录于下: 在Android2.3版本以下重写以下方法就能屏蔽Home键: public void onAttachedToWindow( ...

  6. Google机器学习笔记 4-5-6 分类器

    转载请注明作者:梦里风林 Google Machine Learning Recipes 4 官方中文博客 - 视频地址 Github工程地址 https://github.com/ahangchen ...

  7. CSS三角形制作样式

    .triangle{ display: block; height: 0; position: absolute; width: 0; border: 9px solid; border-color: ...

  8. dede后台登陆不了、出现index.htm Not Found!、无更新模板,解析不了

    以下2个选项内设为空.  

  9. 【读书笔记】iOS-更新项目前要注意的事情

    在进行永久更改项目的任何现代化操作之前,要问自己几个问题. 1,我还需要返回项目的旧代码吗? 2,我的同事中有没有人无法升级到最新版本的Xcode? 3,  如果我使用了最新的功能,会不会减少用户? ...

  10. Android Studio打包过程和应用安装过程

    三个部分,检查项目和读取基本配置,Gradle Build,Apk Install和LaunchActivity. 应用安装到手机,会复制APK安装包到data/app目录下,解压并扫描安装包,把de ...