如何通过命令在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请求完成。不推荐。 –