如何通過命令在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是異步的,你不能,除非您在前面的AJAX調用的回調AJAX調用保證接收訂單的結果。 –
你可以通過將這個添加到你的ajax調用'async:false'來使它同步 – cmorrissey
@cmorrissey是正確的,但是你的瀏覽器將被鎖定,直到所有的AJAX請求完成。不推薦。 –