我正在尝试为我的网站设置ajax进度条。有时多个ajax调用链接在一起这是我的代码
var xhrs = [];
function ajaxCall(){
xhr = $.ajax({
...other ajax code...
success: function(data){
anotherAjaxCall(data);
}
});
xhr.onreadystatechange = reportStatus;
xhrs.push(xhr);
}
function anotherAjaxCall(data){
xhr = $.ajax({
...other ajax code...
});
xhr.onreadystatechange = reportStatus;
xhrs.push(xhr);
}
...lots more functions that make ajax calls....
function reportStatus(){
var overallPercent = 0;
for(i = 0; i < xhrs.length; i++){
overallPercent += (xhrs[i].readyState * 20);
}
var percent = overallPercent / xhrs.length;
alert(percent + " = " + overallPercent + " / " + xhrs.length);
//update progress bar
updateProgressPercentage(percent);
}
从reportStatus函数的alert中,所有发生的事情都是第一个ajax调用到readyState为4,它调用第二个没有在其中运行ajax调用的函数。有没有人知道为什么第二个函数运行但内部的ajax调用没有。提前谢谢。
添
答案 0 :(得分:3)
我相信没有参数的AJAX调用语法错误。尝试更改
xhr = $.ajax({});
到
xhr = $.ajax();
文档说这是你应该如何调用没有参数的函数:http://api.jquery.com/jQuery.ajax/
答案 1 :(得分:0)
他们将其更改为使用他们称之为jqXHR的对象。这些公开readyState,但不允许任意设置其他值。有关详细信息,请参阅jQuery.ajax。但是,您可以尝试使用1.5.1中添加的“xhrFields”选项来添加onreadystatechange回调。
答案 2 :(得分:-8)
我找到了答案。要做到这一点,我需要用户jQuery 1.3.2。版本1.4.2必须以某种方式更改xhr,版本1.5.1完全更改它。感谢大家的回复。