我已经看到很多关于这个问题,但似乎没有给我的情况正确的答案。 我见过也使用.pipe
的答案,但我正在寻找一个使用.then
的答案。循环和链接使用推迟的Ajax调用
好的。我需要做3个Ajax调用,让我们说一个允许多个账户的投票应用程序。 需要完成以便账户可以投票的过程如下。
- 登录
- 选择选项/ s的
- 提交
- 注销(只是清除饼干,没必要张贴)。
比方说,我有2个账户:
var accts = [{user: "acct1", pswd: "1234"},{user: "acct2", pswd: "4321"}];
现在我需要通过这些帐户循环使用jQuery的$.each
$.each(accts, function(key,value){
});
我了解到,使用$.Deferred
可以做到这一点很好,但正确的实施。
我要的是
--------loop1--------
login
select
vote
--------loop2--------
login
select
vote
All Done!.
但发生的事情是(当我尝试console.log
上正在发生的事情) 全部完成! 登录(2) 选择(2) 投票(2)
因此,这里是我的代码:
$.each(data, function(k, v) {
promise.then(function() {
return $.post(loginURL, {user: v.username, passwrd: v.password});
}).then(function(html) {
if (data > 0) {
console.log('Logged In!');
return $.post(pollURL + 'select.php', {id: 143});
} else {
console.log('Login Failed.');
return false;
}
}).then(function(data) {
if (data === 'selected') {
console.log('Already have a selection.');
return false;
} else {
return $.post(pollURL + 'submit.php');
}
}).then(function(data){
if(data > 1) {
Console.log('Successfully Voted.');
} else {
// if possible return to the login?
}
});
});
promise.done(function() {
console.log('All Done. Logged out.');
});
我在做什么错?
'argSet.password'? – 2013-05-03 21:02:37
@甜菜根 - 甜菜根:固定。为OP写了所有这些,并没有意识到我混淆了我的变量/属性名称 – BLSully 2013-05-03 21:04:58