我有以下代码:
<a href="http://mydomain.com/link123" class="someClickEvent">Some Link</a>
$(document).ready(function(){
$('.someClickEvent').click(function() {
var $deal_id = 0;
var $position = 0;
var data = {
deal_id : $deal_id,
position : $position
};
$.ajax({
type : 'POST',
data: data,
url : '/ajax/trackBannerClick',
success : function(data){
return true;
}
});
});
});
并且,似乎在用户发送到新URL之前,click事件没有完成。有没有办法确保在将用户发送到新URL之前完成click事件?我宁愿不使用window.location,因为它不是SEO友好。
答案 0 :(得分:4)
我认为添加async: false
可能导致脚本在调用success
函数之前等待Ajax完成:
$(document).ready(function(){
$('.someClickEvent').click(function() {
var $deal_id = 0;
var $position = 0;
var data = {
deal_id : $deal_id,
position : $position
};
$.ajax({
type : 'POST',
data: data,
url : '/ajax/trackBannerClick',
async : false,
success : function(data){
return true;
}
});
});
});
参考:
答案 1 :(得分:0)
$(document).ready(function(){
$('.someClickEvent').click(function(e) {
e.preventDefault();
var $deal_id = 0;
var $position = 0;
var data = {
deal_id : $deal_id,
position : $position
};
$.ajax({
type : 'POST',
data: data,
url : '/ajax/trackBannerClick',
success : function(data){
window.document.href = $(this).attr('href');
return true;
}
});
});
答案 2 :(得分:0)
$(document).ready(function(e){
$('.someClickEvent').click(function() {
var $deal_id = 0;
var $position = 0;
//change 1
var target=jQuery(e.target).attr('href');
e.preventDefault()
var data = {
deal_id : $deal_id,
position : $position
};
$.ajax({
type : 'POST',
data: data,
url : '/ajax/trackBannerClick',
success : function(data){
//change2
window.location=target;
return true;
}
});
});
});