首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >javascript -我可以检查ajax当前是否正在加载吗?

javascript -我可以检查ajax当前是否正在加载吗?
EN

Stack Overflow用户
提问于 2011-09-22 09:51:41
回答 2查看 3.1K关注 0票数 0

我做了一个“向下滚动,激活ajaxrequest,加载更多内容”的功能。

但为了让它正常工作,而不是连续多次触发,因为在ajax数据加载到文档之前,用户会滚动更多内容,所以如果有任何ajaxrequest加载,我需要防止触发更多的ajaxrequest。

代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$(document).scroll(function() {
var scrollBottom = $(document).height() - $(window).scrollTop();
if (scrollBottom < 3000) {
var offset = parseInt($("#offset").html()) + 10;
document.getElementById('offset').innerHTML = offset;
$.ajax({
   type: "POST",
   url: "/",
   data: "offset=" + offset <?=$ajaxextra?>,
   success: function(data){
   $("#mainContent").append(data);
  },
   error: function(e) {
    alert(e);
  }
 });
}
});

这就是我认为我需要的伪代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (scrollBottom < 3000 && !ajax.isLoading())

人们是怎么做这种事情的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-22 10:11:02

由于您可能可以启动许多AJAX请求,我认为最好的解决方案之一-基本上是一个可靠的解决方案-是首先创建一组请求的状态,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var ajaxRequestsState = [];

当您启动一个AJAX请求时,您应该向此数组添加一个元素,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ajaxRequestsState.push({ requestId: "some identifier" });

稍后,如果您需要检查是否没有活动的请求,您可以有一个这样的标志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function isAsyncRequestActive() {
     return ajaxRequestsState.length > 0;
}

最后,每当请求结束或失败时,您必须这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function releaseRequest(requestId) {
    var requestIndex = 0;
    var found = false;

    while(!found && requestIndex < ajaxRequestsState.length)
    {
        found = ajaxRequestsState[requestIndex].requestId == requestId;
        requestIndex++;
    }

    if(found) {
        ajaxRequestsState.splice((requestIndex-1), 1);
    }
}

releaseRequest("identifier of request which ended or failed");

这只是简单地跟踪请求的状态并维护一个请求的状态集合,您就拥有了它!

*已编辑!

票数 2
EN

Stack Overflow用户

发布于 2011-09-22 09:56:11

我建议使用旗帜。

标志的概念是打开/关闭某些东西。在这种情况下,您可以指定一个全局布尔(true或false)变量(more on Global Variables in JS)。当您触发一个给定的ajax请求时,您将该变量设置为true,当ajax完成时,您将其设置为false。您唯一需要做的就是在请求任何ajax请求时检查该全局变量。

考虑到您的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Global variable. It needs to be outside any function, you can make it the first line in your .js file.
var isAjaxLoading = false;
$(document).scroll(function() {
var scrollBottom = $(document).height() - $(window).scrollTop();
if (scrollBottom < 3000 && !isAjaxLoading) {
var offset = parseInt($("#offset").html()) + 10;
document.getElementById('offset').innerHTML = offset;
isAjaxLoading = true;
$.ajax({
   type: "POST",
   url: "/",
   data: "offset=" + offset <?=$ajaxextra?>,
   success: function(data){
   $("#mainContent").append(data);
   isAjaxLoading = false;
  },
   error: function(e) {
    alert(e);
    isAjaxLoading = false;
  }
 });
}
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7512836

复制
相关文章
检查app的activity是否在当前
APP开发中经常会遇到这种需求,需要检查当前的APP是不是可见的,比如,如果是可见的就维持一个socket长连接,如果切到后台不可见了,就断开这个连接。Android本来并不允许APP去监听home键事件,所以我们没发像iOS那样通过监听home键事件来做对应的处理。不过还好Android的Activity的生命周期给我们提供了一种解决这个问题的方法,我们只需要在每个Activity的onStart和onStop中去维持一个计数,如果这个数值大于0,就表示我们的APP还有Activity是在前台运行的,等
xiangzhihong
2018/01/30
9880
JavaScript 检查是否是数字
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/109551.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
1.1K0
ping不可以检查端口是否开放,telnet可以检查端口开放
1、ping ping命令工作在OSI参考模型的第三层-网络层。 ping命令会发送一个数据包到目的主机,然后等待从目的主机接收回复数据包,当目的主机接收到这个数据包时,为源主机发送回复数据包,这个测试命令可以帮助网络管理者测试到达目的主机的网络是否连接。 ping无法检查系统端口是否开放。 2、telnet Telnet是位于OSI模型的第7层---应用层上的一种协议,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程
用户1220053
2018/05/30
5.8K0
检查原生 JavaScript 函数是否被覆盖
原文链接:https://mmazzarolo.com/blog/2022-07-30-checking-if-a-javascript-native-function-was-monkey-patched/[1]
chuckQu
2022/09/20
6020
检查原生 JavaScript 函数是否被覆盖
jquery和ajax实战教程_ajax可以跨域吗
主要的效果是使用ajax来实现书籍的价格随着书籍的数量变化,有一个增加按钮和一个减少按钮
全栈程序员站长
2022/09/22
7040
jquery和ajax实战教程_ajax可以跨域吗
iOS 检查指定日期是否在当前日期之前
iOS检查指定日期是否在当前日期之前, 直接上代码: - (BOOL)checkProductDate: (NSString *)tempDate { NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; [dateFormatter setDateFormat:@"yyyy-MM-dd"]; NSDate *date = [dateFormatter dateFromStrin
周希
2019/10/15
1.9K0
JavaScript判断页面是否已经加载完毕
  在做针对CheckBox框点击事件的时候,发现点击以后有时候会报错,但是是生成的JavaScript的代码的内部错误,无法判断到底是什么地方有问题。就一直在找问题。刚刚突然想到可能与页面的加载状态有关。就来试了试果然如此。
aehyok
2018/09/11
2.4K0
检查 JavaScript 变量是否为数字的几种方式
JavaScript 是一种动态类型的语言,这意味着解释器是在运行时确定变量类型的。这允许我们可以用同一变量中存储不同类型的数据。但是如果没有文档和保持一致性,在使用代码时,我们很有可能并不知道变量究竟是哪种类型。
疯狂的技术宅
2020/09/29
2.8K0
Javascript中对象如何检查key(键)是否存在
如果要特别测试对象实例的属性(而不是继承的属性),请使用hasOwnProperty:
IT工作者
2022/02/09
26.7K0
Android WebView不能加载ajax?加载ajax无效?
!苹果或高版本的安卓webview可能会有跨域被拦截的问题,需要在服务端允许跨域。 另外高版本的webview注意使用HTTPS协议的请求,普通http将会被拦截 php示例代码:
雪碧君
2023/02/13
1.8K0
Javascript判断图片加载是否成功的方法(转)
在做页面的时候,经常碰到要在页面加载完全之后再去展现。这时候我们会直接想到使用window.onload的方式,或者是采用Jquery的ready方法判断,这在一定程度可以搞定。
山河木马
2019/03/05
2K0
Javascript判断图片加载是否成功的方法(转)
我可以弃用这个端点吗?
让我们假设你是一个开发人员,接管了 Catalog 微服务的所有权。你被要求弃用/v1/catalog 端点而使用新的/v2/catalog 端点。你该怎么做呢?
CNCF
2022/03/25
1.7K0
我可以弃用这个端点吗?
Python这么火,我可以学吗?
越来越多行业都在应用的Python,主要的应用领域有哪些呢?Python每个人都可以学吗?今天我们就来详细看一下。
老九君
2020/03/11
1.2K0
PHP,JavaScript 获取当前域名、判断网址协议是否为 HTTPS
1. PHP 判断当前协议是否为 HTTPS ---- /** * 判断当前协议是否为 HTTPS */ function is_https() { if ( !empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') { return true; } elseif ( isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWAR
很酷的站长
2023/02/02
3.6K0
【javascript】hasOwnProperty()方法检查对象是否有该属性
hasOwnProperty() 只会检查对象的自有属性,对象原形上的属性其不会检测;但是对于原型对象本身来说,这些原型上的属性又是原型对象的自有属性,所以原形对象也可以使用hasOwnProperty()检测自己的自有属性
唯一Chat
2022/09/27
1.1K0
检查当前比特币下降
比特币的价格变化在2018年的大部分时间里一直处于红色。当然,这一年还只有几个星期的时间,对于许多加密货币投资者来说,这仍然是一个令人担忧的趋势。比特币的价格不仅自12月中旬创下19,800美元的顶点以来一直在下降,整个市场的价格正在大幅降低。在撰写本文时,比特币的价格远低于10,000美元大关,目前为8,709美元,在过去24小时内下跌4%。
DEXIN
2018/03/08
7430
有趣!你会检查单元格是否包含日期吗?
大家知道,Excel将日期存储为数字,只是显示的是日期格式,例如,Excel单元格中显示的是2022年5月10日,但实际上存储的是数字44691。
fanjy
2022/06/04
1.8K0
有趣!你会检查单元格是否包含日期吗?
Google 现在可以更轻松地检查你的密码是否泄露
Google 拥有一个可在 Chrome 和 Android 之间同步的密码管理器,现在该公司正在添加“密码检查”功能,该功能将分析你的登录名,以确保它们不属于大规模密码泄露事件的一部分。密码检查功能此前已可以作为扩展程序使用,但是现在 Google 正在将其直接构建到 Google 帐户控件中。它会在 http://passwords.google.com(这是 Google 密码管理器的 URL)上突出显示。
用户8670130
2021/09/18
2.4K0
Android正在加载动画
animation 和 animator 对应两种加载效果 不设置时即默认值是animation
黄林晴
2019/01/10
2.3K0
检查当前终端是不是 Docker
要确定当前运行的终端是否在 Docker 容器内,可以检查容器特定的文件和环境变量。以下是一种方法,通过查看 /proc/1/cgroup 文件来判断:
宋天伦
2023/10/21
4270

相似问题

是否可以检查当前的延续是否正在终止?

13

检查Ajax调用中是否加载了JavaScript?

20

MWS在提交提要之前,我们可以检查它当前是否正在节流吗?

112

通过Javascript检查页面是否正在加载某些内容

23

检查用户当前是否正在滚动

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文