ajax loader gif setinterval

时间:2014-10-07 15:14:03

标签: jquery ajax setinterval loader

我试图显示加载图像3秒然后加载ajax数据。所以iv尝试添加这是前功能,但它不工作,它加载速度快,我需要它,所以加载器图像将显示3秒

这是我的js

$.ajax({
        url: "ajax/change_skin.php",
        type: "GET",
        data: {skin:skin},
        before:function(){
            setInterval(function(){
                $('#loader').show();
            }, 3000);
        },
        complete:function(){
            $('#loader').hide();
        },
        success:function(data){
            console.log(date);
        }
    });

3 个答案:

答案 0 :(得分:2)

在执行ajax调用之前显示加载程序。

$("#loader").show();

setTimeout(function() {
    $.ajax({
        url: "ajax/change_skin.php",
        type: "GET",
        data: {skin:skin},
        complete:function(){
            $('#loader').hide();
        },
        success:function(data){
            console.log(date);
        }
    });
}, 3000);

编辑:在实际进行ajax调用之前,我会避免让用户等待任何时间来查看您的微调器/加载器动画。

制造旋转器用于表示实际装载和处理。在这种情况下,您可以虚假地表示处理请求的速度并将慢速投射到用户身上。

应该这样做的方式是:

$("#loader").show();

$.ajax({
    url: "ajax/change_skin.php",
    type: "GET",
    data: {skin:skin},
    complete:function(){
        $('#loader').hide();
    },
    success:function(data){
        console.log(date);
    }
});

答案 1 :(得分:1)

如果您不想为加载添加不必要的3秒延迟(仅限于微调器),请使用ajax延迟结果:

// Show the spinner
$("#loader").show();

// Do the ajax load
var deferred = $.ajax({
    url: "ajax/change_skin.php",
    type: "GET",
    data: {skin:skin},
    success:function(data){
        console.log(date);
    }
});

// Hide after 3 seconds... and then only if/when ajax completes
setTimeout(function() {
    deferred.then(function(){
       $('#loader').hide();
    });
}, 3000);

答案 2 :(得分:0)

你做错了。你应该这样做:

$('#loader').show();
setInterval(function(){
    $.ajax({
    url: "ajax/change_skin.php",
    type: "GET",
    data: {skin:skin},
        complete:function(){
           $('#loader').hide();
        },
        success:function(data){
            console.log(date);
        }
    });
}, 3000);

SetInterval将使每个代码在指定的间隔之后运行。