ajax成功后更新数据内容而没有setinterval

时间:2015-06-26 03:36:10

标签: jquery ajax setinterval

有没有setinterval在scucess之后更新ajax数据内容的方法 它使我的浏览器非常慢 这是我的代码

setInterval(function(){
var ajaxurles = "<?php echo admin_url('admin-ajax.php'); ?>";
$.ajax({
     type: "GET",
     url: ajaxurles,
     data:'action=ajax_statics&post_id=<?php echo $post->ID; ?>',
     success:function(data){
    $(".loadajaximge").hide();
    $('.inajaxupdates').empty();
    $(".inajaxupdates").append(data);
    }               
    });
    },9000);

2 个答案:

答案 0 :(得分:1)

这需要使用setIntervalsetTimeout。但setTimeout会优于setInterval,因为setInterval,如果您之前的ajax请求未完成,并且您启动了另一个请求,则会有多个请求很快就会出现问题。 你可以做的是,使用setTimeout,例如:

(function doSomeRequest() {
  $.ajax({
     type: "GET",
     url: ajaxurles,
     data:'action=ajax_statics&post_id=<?php echo $post->ID; ?>',
     success:function(data){    
        $(".loadajaximge").hide();
        $('.inajaxupdates').empty();
        $(".inajaxupdates").append(data);
     },
     complete: function() {
         //call the 'doSomeRequest' when current one is complete
         setTimeout(doSomeRequest, 9000);
     }
  });
})();

但是如果你的请求失败,那么setTimeout会阻止其他请求。

答案 1 :(得分:0)

仅使用代码的这么多部分,在成功回调后想要追加内容时不需要setinterval,直到除非你想使用间隔再次进行ajax调用。使用以下代码:

ajaxurles = "<?php echo admin_url('admin-ajax.php'); ?>";
$.ajax({
     type: "GET",
     url: ajaxurles,
     data:'action=ajax_statics&post_id=<?php echo $post->ID; ?>',
     success:function(data){
    $(".loadajaximge").hide();
    $('.inajaxupdates').empty();
    $(".inajaxupdates").append(data);
    }               
    });

<强>编辑:

ajaxurles = "<?php echo admin_url('admin-ajax.php'); ?>";
setInterval(function(){
$.ajax({
     type: "GET",
     url: ajaxurles,
     data:'action=ajax_statics&post_id=<?php echo $post->ID; ?>',
     success:function(data){
    $(".loadajaximge").hide();
    $('.inajaxupdates').empty();
    $(".inajaxupdates").append(data);
    }               
    });
    },9000);