我在 for 循环中使用基本的 jQuery post 请求。
for (i = 1; i < 2; i++) {
for (ii = 0; ii < 2; ii++) {
$.post( "url", 'some data')
.done(function( data ) {
if(data.length > 2){
$("#datagot").append(ii);
}
});
}
}
我需要将 ii 变量传递给 .done 函数,但脚本不会等到请求完成,因此每个请求的 ii 都不正确。
我怎样才能做到这一点?有没有办法将 ii 作为参数传递,有什么想法吗?
最佳答案
我认为这是错误的方法,根据你的代码,你正在为从 0 到 2 的每个 ii 执行 2 个 post 调用,所以 0 和 1 所以两个 ajax 调用,你需要延迟对象所以这样的事情如果它们是异步
$.when(callOne(),callTwo()).then(function(answerOne,answerTwo){
if (answerOne == 'answerOneReturned' && answerTwo =='answerTwoReturned'){
$("#datagot").append(answerOne);
$("#datagot").append(answerTwo);
}
});
function callOne(){
return $.ajax({
url:'myUrl.php',
type:'POST',
dataType:'html'
}).then(function(data) {
if (data == 'something'){
myAnswer = 'answerOneReturned';
}
return myAnswer;
});
}
function callTwo(){
return $.ajax({
url:'myUrl.php',
type:'POST',
dataType:'html'
}).then(function(data) {
if (data == 'something'){
myAnswerTwo = 'answerTwoReturned';
}
return myAnswerTwo;
});
}
如果它们是同步的,则与上面的功能相同,但是您必须使用为同步编写的这个
$.when(callOne()).then(function(answerOne){
if (answerOne== 'answerOneReturned'){
return callTwo();
}
}).then(function(answerTwo){
if (answerTwo== 'answerTwoReturned'){
//Do append
}
});
必须明确延迟对象允许执行,例如,异步调用 10 次 ajax 但处理所有答案并指向您想要的位置...所以如果 anwserOne 是 A 并且 answerTwo 是 B 在 answerOne 是 C 中做一件事并回答两个 id D 做另一件事....等等......等等......
抱歉,这是什么意思?
for (i = 1; i < 2; i++) {
对于 i=1 和 minor or 2 没有必要?没有必要....
关于javascript - jQuery post - 等待响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47488710/