我在循環中有一個$ .post函數。它所做的就是調用一個php函數來驗證輸入。如果輸入有效,它將返回「true」(我測試並運行)。在這一點上,我使用回調做一些處理,它不工作。
例如,如果我循環三個項目,回調函數處理第三個項目而不是每個三個項目。
這裏是我的相關代碼:
for (step in steps) {
var step_name = steps[step];
// grab input value
var step_answer = escape($("#" + step_name).val());
if (step_answer != "") {
// check to see if answer validates
console.log(step_name) // THIS SHOWS CORRECT VALUES: 1, 2, and 3
$.post("utility.php", {
utility: "validateAnswer",
step: step_name,
answer: step_answer
},
function(data) {
// if validation suceeds..
if (data == "true") {
console.log(step_name); // THIS SHOWS WRONG VALUES: 3, 3, and 3
correct_steps.push(step_name);
}
});
}
}
任何想法?謝謝。
沒有理由他需要做異步調用來實現他想要的。 – 2009-12-24 18:21:26
的確如此,但這僅僅是爲了證明他將不得不這樣做,以便step_name在此期間不會改變。 – 2009-12-24 18:24:33
我的意思是'同步'。其實,我的意思是,你的回答是完全錯誤的。它與調用是異步的事實無關。 – 2009-12-24 18:27:09