简单的回答就是:不要重复发送相同的Ajax请求!
如何做到? 那就要有一定的经验和逻辑处理能力
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
我们用一个例子来说明一下:
现在要求每隔5秒钟用Ajax去向后台请求一次数据,并把数据放到ID为XX的DIV里
假设后台访问地址:http://127.0.0.1/getdata
用jQuery插件来举例
先说容易犯错的可能性, 上代码:
一眼看去, 没毛病,页面加载完成后开始每隔5秒利用Ajax去拿一次数据,并放到指定的DIV里
但实际运行的时候,因为各种原因(比如网络延迟),会导致上次数据没Load到, 第2次请求又到时间了,结果开始出现重复请求
严重的话简直会排着队在不停的请求都有可能!
上面问题导致的最根本原因是没考虑请求数据时有可能出现的延迟,我们来改进一下:
代码比上面稍长,但它解决几个问题:
- 改用了setTimeout定时器,避免反复发送Ajax请求
- 修改了下次取数据的机制, 变成当前这次请求数据完成后才开始计时5秒再执行下次请求数据
这样可以杜绝了重复发送Ajax请求的需求
当然了, 上次这个方法也还有瑕疵
比如说当某次Ajax请求出错时,每隔5秒请求就再也不会执行了,程序就此中断
解决办法当然是有的,但已经是另一个话题了
对技术有兴趣的欢迎互相关注,相互学习!
有了上面的例子, 题主的问题就好解决, 思路如下:按钮点击后可以disabled掉, 数据请求成功后再恢复按钮成正常状态即可.