我有以下click事件,它调用codeigniter方法来更新我的数据库。它用于跟踪链接的点击次数。它适用于IE9,但不适用于Firefox 3.6.3。
$(".link").click(function(event) {
$.get('<?= base_url() ?>ajax/click_out/' + $(this).attr("site_id"));
});
它调用正确的php文件并发送正确的信息,但获得空响应。如果我在get之后添加一个警报,它会起作用,如果我阻止默认事件,它也可以工作。是否有可能firefox没有完成ajax,因为加载新页面后代码就消失了?
为了测试这一点,我将代码修改为:
$(".link").click(function(event) {
event.preventDefault();
var link = $(this);
$.get('<?= base_url() ?>ajax/click_out/' + $(this).attr("site_id"));
window.document.location.href = $(this).attr("href");
});
我认为它必须等待重定向,直到get完成,但这也不起作用。如果我取出重定向但保留了preventDefault,它会跟踪点击很好(但显然不会将用户发送到网站。
如果需要,链接的html为:
<a href="<?= $url ?>" site_id="<?= $site_id ?>" class="link"><?= $title ?></a>
我是jQuery和javascript的新手,非常感谢我能得到的任何帮助!
答案 0 :(得分:3)
您可以在get
请求完成后通过在success
回调中重定向用户来将用户重定向到网站,例如
$(".link").click(function(event) {
event.preventDefault();
var link = $(this);
$.get('<?= base_url() ?>ajax/click_out/' + $(this).attr("site_id"),function(){
window.document.location.href = link.href;
});
});
答案 1 :(得分:0)
只是在黑暗中拍摄,但你可以尝试这样的事情......
$.get("test.php", function(data){
window.document.location.href = $(this).attr("href");
});