我想计算点击特定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);
});