我有一个jquery + ajax代码来跟踪点击我网站上的广告链接。这是出于测试目的:
$(document).ready(function(){
$(".myadlinks").on("click",function(e){
e.preventDefault();
var d = {id:$(this).attr('id')};
$.ajax({
type : 'GET',
url : "adlinktracking.php",
data : d,
success : function(responseText){
if(responseText==1){
alert('click is saved OK');
window.location.href = $(this).attr('href');
}else if(responseText==0){
alert('click can't be saved.');
}
else{
alert('error with your php code');
}
}
});
});
});
当我点击广告链接时,它会显示提醒:点击已保存,但是然后它不会重定向到预期的网址。我认为这行代码window.location.href = $(this).attr('href');
有问题。因为当我尝试将$(this).attr('href');
替换为" http://www.google.com"时。它有效。
请帮助......非常感谢
答案 0 :(得分:4)
您需要引用不在回调中的href
属性。回调中的$(this)
不是用户点击的链接。
$(document).ready(function(){
$(".myadlinks").on("click",function(e){
e.preventDefault();
var link = $(this);
var linkHref = link.attr('href'); //this line is new
var d = {id: link.attr('id')};
$.ajax({
type : 'GET',
url : "adlinktracking.php",
data : d,
success : function(responseText){
if(responseText==1){
alert('click is saved OK');
window.location.href = linkHref; //reference to the save href
} else if(responseText==0){
alert('click can't be saved.');
} else{
alert('error with your php code');
}
}
});
});
});
答案 1 :(得分:1)
$(this)
未指向成功回调上下文中的链接。你必须在seprate变量中设置它并在成功回调中使用它。检查以下代码。
$(document).ready(function(){
$(".myadlinks").on("click",function(e){
e.preventDefault();
var currentobj = this;
var d = {id:$(this).attr('id')};
$.ajax({
type : 'GET',
url : "adlinktracking.php",
data : d,
success : function(responseText){
if(responseText==1){
alert('click is saved OK');
window.location.href = $(currentobj).attr('href');
}else if(responseText==0){
alert('click can't be saved.');
}
else{
alert('error with your php code');
}
}
});
});
});