如何在不等待ajax响应的情况下执行计数统计

How to perform a count statistics without wait for ajax response

本文关键字:执行 情况下 统计 响应 等待 ajax      更新时间:2023-09-26

我想计算点击特定div(#counter)的次数,然后重定向到另一个站点。

我对id为counter的div的点击事件进行了ajax调用。然后在成功函数中,我将在ajax上完成重定向。这是代码

jQuery('#counter').click(function(){
  var data = { clicked:'yes'
};
jQuery.ajax({
  url:"stat.php",
  type:"POST",
  data:data
}).done(function(res){
    window.location = "http://www.myurl.com";
  });    
});

问题是,这需要一些时间来重定向,这样用户就必须等到ajax完成事件触发。

由于我不关心响应,我只需要一个启动用户点击该(#counter)div的请求,所以我只增加DB中的值。那么,有没有一种方法可以在ajax启动后立即重定向到另一个网站?我不希望用户等待响应然后重定向。因为在这种情况下不需要响应。这只适用于网站统计,或者计算按钮点击次数,然后将其重定向到其他网站的最佳方法是什么。

编辑、更新

尝试

jQuery('#counter').click(function(){
   data = { clicked:'yes'
   };
   var redirect = function() {
       setTimeout(function() {
     window.top.location.href = "http://stackoverflow.com/questions/"
                                + "25554598/"
                                + "how-to-perform-a-count-statistics-"
                                + "without-wait-for-ajax-response/";
       }, 1500); };
   $.when(jQuery.ajax({
       url:"/echo/json/",
       type:"POST",
       data:{json:JSON.stringify(data)}
   }), redirect())
   .done(function(_data) {
     alert(_data[0].clicked)
   })   
});

jsfiddlehttp://jsfiddle.net/guest271314/51g5huvq/

只需将重定向代码移到.done回调之外即可。通过这种方式,当您单击时,会立即完成两件事:发送ajax请求,并启动重定向。您可以将重定向封装在一个短的setTimeout中,以确保在重定向客户端之前激发了ajax请求。

jQuery('#counter').click(function(){
   var data = { clicked:'yes'
   };
   jQuery.ajax({
       url:"stat.php",
       type:"POST",
       data:data
   }).done(function(res){
   });    
   setTimeout(function(){window.location = "http://www.myurl.com";}, 500);
});