Aar*_*cki 3 javascript ajax jquery callback
我正在尝试为多个ajax请求显示两个进度条.每当我的18个ajax请求中的一个完成时,一个进度条达到100%,而当所有18个请求完成时,另一个达到100%.第一个栏很好用,并在我的ajax成功回调中实现.我在触发第二个酒吧时遇到了麻烦,因为我似乎需要第二次成功回调......
这是我的第一个ajax请求的代码.它被调用18次,因为这是我的Config对象中有多少项.
for (var propt in Config) {
var db = '...';
var user = '...';
var pword = '...';
var func = '...';
var dat = {"...": propt };
var url = "https://...";
var callData = jQuery.extend({"Db": db, "User": user, "Password": pword, "Function": func}, dat);
$.ajax({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(callData),
xhr: function() {
var xhr = new window.XMLHttpRequest();
//Download progress
xhr.addEventListener("progress", function(event){
var percentComplete = (event.loaded / event.total)*100;
//Do something with download progress
tableProgressBar(percentComplete);
}, false);
return xhr;
},
success: successHandlerRunTest1,
error: errorHandlerRunTest1,
dataType: "json"
});
$('#jsonMsg1').html('Running...');
$('#jsonRslt1').html(' ');
}
Run Code Online (Sandbox Code Playgroud)
我也想同时解雇这个成功功能.
success : function (serverResponse) {
response[response.length] = serverResponse;
$('#progress-bar').text(current + ' of ' + total + ' tables are done');
current++;
},
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不相信我可以在第一个成功函数中调用第二个成功函数,因为第一个函数接收包含JSON数据的特殊参数.
我尝试过像......
success : function (serverResponse) {
response[response.length] = serverResponse;
$('#progress-bar').text(current + ' of ' + total + ' tables are done');
current++;
successHandlerRunTest1(data);
},
Run Code Online (Sandbox Code Playgroud)
...但是这不起作用,因为我的successHandlerRunTest1(数据)收到的"data"对象是空的.
有没有办法在每个ajax请求中执行两次成功回调?
不要使用success参数.
使用该done方法附加回调,因为它返回链接的承诺,您可以多次调用它:
$.ajax({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
data: JSON.stringify(callData),
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", function(event){
var percentComplete = (event.loaded / event.total)*100;
tableProgressBar(percentComplete);
}, false);
return xhr;
},
dataType: "json"
})
.done(successHandlerRunTest1)
.fail(errorHandlerRunTest1)
.done(function (serverResponse) {
response[response.length] = serverResponse;
$('#progress-bar').text(current + ' of ' + total + ' tables are done');
current++;
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4475 次 |
| 最近记录: |