我已經看到很多關於這個問題,但似乎沒有給我的情況正確的答案。 我見過也使用.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