多个ajax请求状态
Multiple ajax request state?
我正在编写一个脚本,需要执行一些并行的ajax请求。我使用ajax数组,但我想执行一些代码(使一些标签可见)当所有的请求完成。这是代码,希望你能帮助我。
function Update_All(){
var loading = document.getElementById("loading_image");
var actualizacion_completa = document.getElementById("actualizacion_completa");
loading.style.display = "";
actualizacion_completa.style.display = "none";
var i=1;
var ajax= new Array(20);//objetoAjax();
var limit = 1;
var ready = 1;
for (i=1;i<=20;i++)
{
var index = i-1;
ajax[index] = objetoAjax();
var voatencion = document.getElementById("idatencionf"+i);
var vohoras = document.getElementById("vhorasf"+i);
var vtarifa = document.getElementById("tarifaclientef"+i);
var voexonerado = document.getElementById("vexoneradof"+i);
var voaprobado = document.getElementById("vaprobadof"+i);
var campo = document.getElementById("f"+i+"c1");
if(typeof(campo) != 'undefined' && campo != null){
var valor = 1;
if(campo.innerHTML=="Si") valor = 2;
ajax[index].open("GET","update.php?atencion="+voatencion+"&opc="+5+"&valor="+valor+"&exonerado="+voexonerado.value+"&tarifa="+vtarifa.value+"&horas="+vohoras.value);
ajax[index].send(null);
limit = i;
ajax[index].onreadystatechange=function() {
if (ajax[index].readyState==4 && ajax[index].status == 200) {
ready++;
if(ready == limit){
loading.style.display = "none";
actualizacion_completa.style.display = "";
}
}
}
}
else{
break;
}
}
}
问题已经准备好了,永远不会等于极限。
你已经知道极限是20,没有必要每次都用这个limit = i;
来增加它。
设置> 你的脚本开头。
由于数组从0开始,您实际上可能需要为限制设置一个值(在本例中为19)。
另外,在每次完成AJAX请求时添加这一行:
console.log('ready = ' + ready);
这样你就可以看到ready在哪个值停止,或者它根本没有增加。
您的onreadystatechange函数中的index值将不是您所期望的。
建议将当前onreadystatechange替换为:
(function(ajaxItem, ready) {
ajaxItem.onreadystatechange = function() {
if (ajaxItem.readyState==4 && ajaxItem.status == 200) {
ready++;
if(ready == limit){
loading.style.display = "none";
actualizacion_completa.style.display = "";
}
}
})(ajax[index], ready);
相关文章:
- 如何在具有某些 UI 视图的状态中管理工厂单个请求数据
- PhantomJs在控制台中发出http请求时不会返回任何状态
- ajax - 请求对象就绪状态不变
- 如何在alt.js中使用源成功请求后更新状态
- 如何使用scalajs-angular获取请求的http状态代码
- 所选列表元素不会保持选中状态(通过ajax请求更新后)
- 如何侦听跨域映像请求上的任何301/302重定向状态代码
- 浏览器状态栏:隐藏对特定网站的请求地址
- 使秒表在请求之间处于活动状态
- HTTP 状态 405 - 不支持请求方法“POST”(Spring MVC)
- 在运行应用并切换到路由或状态之前解决$http请求
- 获取在 <脚本 src >标记中添加的请求 URL 的状态
- 在状态更改时发送带有状态数据的 AJAX 请求
- React - 如何在 AJAX 请求后更新状态
- AngularJS:使用 ngResource 执行 GET 请求时的状态代码 0
- Ajax 请求标头保持活动状态
- 如何加载麦克风请求并保持其活动状态
- 节点 JS:请求循环,直到状态代码 200
- 状态 = 0 的异步请求
- 收听'检查状态请求'(XML)