$ .eachループ内で成功関数(ajax)の値を取得する際に問題があります。各ループのjQuery ajax
私はこのような何かを持っている:
var test = [];
$.each(images, function(index){
var formData = new FormData();
formData.append('image', images[index]);
$.ajax({
url: 'http://localhost/admin/api/offers/upload_photo',
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
beforeSend: function(){
console.log(test.length);
test.push(images[index]);
},
success: function(){
console.log(test.length);
}
});
});
そしてbeforeSendの出力が細かい(コンソールログ:0、1、2)動作しますが、もう一つは3回3(コンソールログを返します。3、 3,3)。残りは問題なく動作し、私はそれだけで苦労します。私を助けることができる人はいますか?ありがとう!
は、正確に何をすべきかのようです。 –
あなたの 'each'ループは' success'関数のいずれかが起動する前に終了したようです。したがって、反復のうちの1つに対して「成功」が発生するまでに、ループは完了し、テストの長さは3である。これは参考になるかもしれません:[非同期呼び出しからの応答を返すにはどうすればいいですか?](http://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call ) – showdev
その理由は、ajaxはasyncです:)その名前は次のようになります:) –