在jQuery中发送多个ajax调用之前显示文本或预加载器,然后运行?

时间:2014-07-11 04:49:56

标签: javascript jquery .when

我在when then函数中有一个包含多个ajax调用的数组,并希望在每次调用之前显示一个preloder或一个文本。

在我想要展示的每个电话之前说: “处理任务ID 1 ......”然后完成 “处理任务ID 2 ......”等等,直到它被清除为止。

我尝试在ajax调用上使用beforeSend,但始终显示第一个id为1。 任何想法?

var ids = [1, 2, 3, 4, 5]; // task ids
var deferreds = [];
//
$.each(ids, function(i, id_task){
    deferreds.push(
        $.ajax({
            type: "POST",
            url: '/tasks/import',
            data: $.param({id_task: id_task}),
            headers: {'Content-Type': 'application/x-www-form-urlencoded'},

            // always displaying "processing task id 1..."
            beforeSend: function(){
                $('#iter_msgs').html("processing task id " + id_task + "...");
            }
            //

        })
            .success(function(response){
                // more stuff
            })
    );
});
//
$.when
    .apply($, deferreds)
    .done(function(a) {
        //
        $('#iter_msgs').html('')
    });

到目前为止,我希望达到以下效果,但是使用时间,然后:

//
var id_task = 1;
$('#iter_msgs').html("processing task id " + id_task + "...");

//
$.ajax({
    type: "POST",
    url: '/tasks/import',
    data: $.param({id_task: id_task}),
    headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
    .success(function(response) {
        $('#iter_msgs').html("");
    });

0 个答案:

没有答案