我有简单的点击执行post()。此单击也会触发链接。所以我试图阻止它,在发送帖子并点击确定后,链接应该执行。点击确定后无效。
代码:
$( ".prodlink" ).click(function(e){
e.preventDefault();
var f=$(this).attr('href');
// product id
var product_id = f.match(/product_id=([^&]+)/)[1];
var website_url = '<?php if(isset($_SERVER['HTTP_REFERER'])){echo $_SERVER['HTTP_REFERER'];} else { echo 'Unknown';} ?>';
var datum = '<?php echo date('Y-m-d'); ?>';
$.post("<?php echo HTTP_SERVER; ?>/catalog/affiliatecollections/initiate.php",{product_id:product_id,click:1,website_url:website_url, datum: datum},
function(event) {
alert("You are leaving this page");
//location.reload();
}
);
return true;
})
答案 0 :(得分:1)
这不是它的工作原理。该帖子正在运行时,该链接将会执行。
而是这样做:
$(".prodlink").on("click",function(e) {
e.preventDefault();
var f = $(this).attr('href');
// product id
var product_id = f.match(/product_id=([^&]+)/)[1];
var website_url = '...';
var datum = '...';
$.post("...", {
product_id: product_id,
click: 1,
website_url: website_url,
datum: datum
},
function(event) {
alert("You are leaving this page");
location.replace(f); // HERE you execute the link
// or
// window.open(f,"_blank")
}
);
});
或者让新页面执行帖子
<强>更新强>
如果链接看起来像这样
<a href="newpage.html" target="_blank" class="prodlink">click</a>
那么你应该能够做到没有preventDefault:
$(".prodlink").on("click",function(e) {
var f = $(this).attr('href');
// product id
var product_id = f.match(/product_id=([^&]+)/)[1];
var website_url = '...';
var datum = '...';
$.post("...", {
product_id: product_id,
click: 1,
website_url: website_url,
datum: datum
},
function() { console.log("succcess") }
);
});
答案 1 :(得分:1)
为什么不使用
window.location.replace($(".prodlink").attr('href'))