Vig*_*ond 8 javascript ajax jquery
我的问题有点抽象.
我们都熟悉在发出AJAX请求时出现的AJAX预加载器/微调器.我的问题是你如何避免这些?
以可排序列表为例.当用户拖放项目以使用它们时,会进行AJAX调用以更新订单.
以前,我会弹出一个全屏AJAX微调器,以防止用户做任何事情,直到AJAX调用完成.
我的问题是,我将如何避免使用AJAX微调器并"简化"ajax请求,以确保用户在2秒内启动20个ajax请求,它们将按顺序执行?
我真的不需要代码示例,只需要接受或流行的技巧/想法.或者,如果我在这里完全偏离轨道.
谢谢
更新
使用异步javascript库而不是这个来实现你想要的
老下面
到目前为止,在使用数组或队列方面确保它们一次加载和返回一个好的答案.我会像gmail一样消除旋转器,只在必要时才向用户发送消息.关于所有这些微调器交易,没有必要打扰用户.无论如何,他们看起来就像小机器人一样.这是我要做的一些代码.
自从我对此表示赞同之后,我将解释其功能.
我写插件所以这是一个值得插件的想法吗?我不这么认为,但嘿,你永远不会知道.
var queue = [],
doRequest = function(params) {
params.running = true;
$.ajax({
url: params.url,
dataType: 'json',
success: function(d) {
params.success.call(params,d);
queue.unshift(); // Quit counting your change and move along.
if (queue.length > 0) {
doRequest(queue[0]); // Hey buddy, your next.
}
},
error: function(a,b,c) {
params.error.call(params,a,b,c);
alert('"oops"'); // Rick Perry
}
});
},
queueRequest = function(params) {
queue.push(params); // Sir, you'll need to go to the BACK of the line.
if (!queue[0].running) {
doRequest(queue[0]);
}
};
// so to use this little snippit, you just call "queueRequest" like so (over and over)
queueRequest({
url: 'someajax.abc',
success: function(d) {
// let the user know their stuff was saved etc.
// "this" will be the context of the "params"
},
error: function(a,b,c) {
// let the user know something went wrong etc.
// "this" will be the context of the "params"
}
});
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了.
您可以创建一个"ajax请求管理器",将ajax请求排队等待(并可能捆绑在一起).我有一个复杂的应用程序,有许多ajax可更新控件,我只在正在更新的控件上显示微调器.由于您的可拖动列表只更新服务器上的内容,因此您可以在没有微调器的情况下离开.
| 归档时间: |
|
| 查看次数: |
530 次 |
| 最近记录: |