我在循环中有一个$ .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