如何判断 jQuery 是否有挂起的 ajax 请求

 我来答
杜爷1号
推荐于2016-09-22 · 知道合伙人软件行家
杜爷1号
知道合伙人软件行家
采纳数:4973 获赞数:9186
毕业于福建农林大学,本科学士学位。从事IT行业3年,曾参与过多个大型项目的需求调研、软件研发。

向TA提问 私信TA
展开全部
我有一个动作要执行:
Javascript |
copy code | ?
1 var function some_action() {

2 // ...

3 }

但是它需要在所有的 ajax 完成之后才触发,于是我这样写:
Javascript |
copy code | ?
1 $(document).one('ajaxStop', some_action);

这样的话就可以让这个函数等待所有的 ajax 完成之后再执行了。
但是,有些时候我执行这个的时候并没有 ajax 在跑,然后它就不会马上执行了。
这是个问题,因此我希望有一个方法可以判断现在 jQuery 的 ajax 队列里面还有没有没完成的请求,大概会是这个样子来用:
Javascript |
copy code | ?
1 if($.hasAjaxRunning()) {

2 $(document).one('ajaxStop', some_action);

3 } else {

4 some_action();

5 }

同样的问题可以看对应的 stackoverflow 问题。
解决方案:
我们可以手动写一个全局变量来设一个 flag 来判断:
Javascript |
copy code | ?
01 // site.js

02 $(function() {

03 window.ajax_loading = false;

04 $.hasAjaxRunning = function() {

05 return window.ajax_loading;

06 };

07 $(document).ajaxStart(function() {

08 window.ajax_loading = true;

09 });

10 $(document).ajaxStop(function() {

11 window.ajax_loading = false;

12 });

13 });

这样就 KO 了,还算优美。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式