forループでajaxをオーダー別に送信するにはどうすればよいですか?ここに私のコードは次のとおりです。オーダーごとにajaxリクエストを実行
function ajax_sent(i, btn){
jQuery.ajax({
url : ln_ajax_handle.ajax_url,
type : 'post',
data : {
action : 'ln_ajax_handle',
main_data : i
},
success : function(result){
jQuery('#ln-modal-bangchinh').append(result);
if(i === 5){
btn.button('reset');
jQuery('#ln-content-modal').modal('show');
}
}
});
}
jQuery(document).ready(function(){
jQuery('.ln-update').click(function(){
var btn = jQuery(this);
btn.button('loading');
for(var i = 1; i <= 5; ++i){
ajax_sent(i, btn);
}
});
});
そして、ここでは簡単なPHPのテスト関数である:
function ln_ajax_handle(){
$data = $_POST['main_data'];
echo ln_alert_test($data);
wp_die();
}
function ln_alert_test($data){
ob_start();
?>
<div class="alert">
<button type="button" class="close" data-dismiss="alert">×</button>
<strong>Success!</strong> The loop run by <?php echo $data; ?> times;
</div>
<?php return ob_get_clean();
}
PHPファイルでは、私は簡単なテストを取得するためにecho
を使用しています。しかし、結果は数字が画像のような順序で並べられていないことです。 。私はi = 1
が欲しいときに、サーバーから応答を受けると、i = 2
が実行されます。次の進歩は同じです。これを行う方法は?
は、あなたは順序で結果を受け取ることを保証することはできません。 –
これをあなたのajax呼び出しに追加することで同期させることができます。 'async:false' – cmorrissey
@cmorrisseyは正しいですが、ブラウザはすべてのAJAX要求が完了するまでロックされます。お勧めしません。 –