最近做一个关于定时AJAX请求数据库信息问题,发现经常有重帧现象。
目前的代码:
var id = 0;
window.onload = function() {
id = document.getElementById("maxId").value;
initXMLRequest();
setInterval("sendHTTPRequest()", 1000);
};
var xmlRequest = null;
function initXMLRequest() {
if (window.ActiveXObject) {
xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
} else {
if (window.XMLHttpRequest) {
xmlRequest = new XMLHttpRequest();
}
}
}
function sendHTTPRequest() {
var url = "decodePass?id=" + id + "&sync=" + sync;
if (xmlRequest) {
xmlRequest.open("POST", url, true);
xmlRequest.onreadystatechange = isDataExists;
xmlRequest.setRequestHeader("If-Modified-Since","0");
xmlRequest.send(null);
}
}
function isDataExists() {
if (xmlRequest.readyState == 4) {
if (xmlRequest.status == 200) {
id++;
}
}
}
个人推断:
1、在定时轮询AJAX时,在当前设置的循环时间内,没有请求到所要请求的值,这样会发生AJAX URL 没有改变,所以
下次请求还是上次请求的内容,当好几次都没有请求到数据的时候,这样到最后堆积到一块,就会请求到许多重复数据
想到的解决办法:
1、采用递归方法,在方法里面写定时调用方法,可是这样的话当第一次没有请求到数据时候就不会在请求了,
window.onload = function() {
sendHTTPRequest();
};
function isDataExists() {
if (xmlRequest.readyState == 4) {
if (xmlRequest.status == 200) {
setInterval("sendHTTPRequest()", 1000);
id++;
}
}
}
解决办法:
1、把异步请求改成同步请求
2、把setInterval 改成 setTimeout 改为请求完成停顿一秒再请求
3、锁定窗口请求(没试过)
引用
window.reqstate = false;
分享到:
相关推荐
主要用于消息提醒,利用js页面定时器,定时提交ajax请求,查询最新的消息记录。改了很多次,终于成功了。
本文将探讨由同步AJAX请求造成的浏览器假死现象,并给出解决方案。 首先,我们需要了解什么是同步请求和异步请求。在AJAX中,通过设置async选项,我们可以控制请求是同步还是异步。同步请求会在请求完成之前阻塞...
"ajax请求提示"是用户体验设计的一个重要方面,旨在向用户展示后台正在处理的数据加载过程,提供一个友好的反馈机制,增强交互体验。 在描述中提到的“页面发起ajax请求提示时会有一个延时的提示效果”,这通常涉及...
中断系统允许单片机在执行某个任务时,响应其他事件请求,如定时器溢出,并暂时停止当前任务,转去处理事件请求,处理完后再回到原来的任务。 第一节中断概述: 中断是指单片机在执行某个任务时,遇到其他事件请求...
而“ajax_timer”似乎是指在AJAX应用中使用的定时器功能,这通常涉及到动态加载或定时触发的请求。下面我们将详细探讨AJAX定时器的工作原理、实现方式以及其在实际项目中的应用。 ### 1. AJAX定时器基础 **1.1 ...
然而,有时我们需要在发送Ajax请求后取消它,比如用户在请求处理完成前执行了其他操作。本文将深入探讨如何在jQuery中使用xhr对象的`.abort()`方法来取消Ajax请求。 首先,jQuery的$.ajax()函数是创建Ajax请求的...
通过给定时器一个合适的等待时间,尝试确保前一个Ajax请求能够在下一个请求前完成。但是,这种方法并不稳定,因为它依赖于估计Ajax请求执行的时间,这在实际中往往难以准确预估。除了使用定时器,文档还隐晦地提到了...
这种动态更新可以结合定时器(setInterval)定期发送Ajax请求,或者利用WebSocket实现即时通信。 总结,Ajax刷新在Java中是一个重要的技术,它提高了Web应用的交互性和响应性。通过理解Ajax的工作原理,熟练掌握...
2. **Ajax请求**:回调函数中,使用`XMLHttpRequest`对象或者更现代的`fetch` API向服务器发送GET或POST请求,获取或者提交数据。请求的URL通常包含一个标识符,让服务器知道这是定时器触发的请求。 3. **处理响应*...
主定时器的UEV会触发从定时器的计数器重装载,这样两个计数器的值就可以相加,形成长计数器。 PWM输出在定时器级联中也有应用。例如,可以通过设置主定时器的PWM输出,然后让从定时器作为计数器,根据主定时器的...
在本项目中,我们将探讨如何利用这两个定时器在16位自动重装模式下,分别在两个不同的端口输出脉冲,并通过LCD12864液晶显示器来显示定时器的状态。 首先,我们来看定时器0。在16位自动重装模式下,定时器0可以工作...
Timer方法重入是指使用多线程计时器,一个Timer处理还...本代码中包含重入问题的产生及重入问题的四种解决方案(1、使用lock(Object) 2、设置一个标志 3、使用Interlocked.Exchange()方法 4、定时器的AutoReset属性)
辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 定时器计算器辅助软件 ...
$.ajax({ success: function (returnValue) { window.setInterval(fnSetMarkPoint(), 5000); } }); 调用DiGui()方法后 问题: 每隔0.1秒创建一个setInterval,成一个树形的方式循环创建setInterval,直到页面崩溃 ...
定时器是一种硬件电路,能够按照预定的时间间隔产生中断请求。在微控制器中,定时器通常用于计数、延时或者周期性任务的执行。在本实验中,我们将利用定时器来控制LED灯的亮灭,这需要对定时器的工作模式和中断机制...
实验现象: 1、使用定时器1的模模式驱动LED闪烁,1s间隔 2、引出线,使用示波器:电调PWM信号输出:占空比为5% 3、呼吸灯:两个灯交替呼吸 4、外接蜂鸣器,引脚P07,蜂鸣器播放我和我的祖国、两只老虎、生日快乐等等...
在ARM处理器中,通常有多个定时器,例如定时器0和定时器1,它们都是基于计数器的,工作原理是计数器对内部时钟脉冲进行计数,达到预设值时产生中断请求。 定时器0和定时器1的配置主要涉及以下几个方面: 1. 工作...
富士通的MB90543是一款8位微控制器,具有丰富的功能和高性能,其中包括16位自动重装定时器。这个定时器能够自动重置其计数值,从而实现连续、无中断的计时操作。 自动重装定时器,也称为自动装载定时器,其工作原理...
【uni-app定时器实例】 uni-app是一个基于Vue.js开发的多端统一框架,它允许开发者编写一次代码,就可以在iOS、Android、Web(H5)、微信小程序、支付宝小程序、百度小程序等多个平台上运行。在uni-app中,我们可以...