Firefox中的jQuery单击事件问题

时间:2011-07-17 02:47:08

标签: jquery ajax codeigniter

我有以下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的新手,非常感谢我能得到的任何帮助!

2 个答案:

答案 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;

});

});

看看http://api.jquery.com/jQuery.get/

答案 1 :(得分:0)

只是在黑暗中拍摄,但你可以尝试这样的事情......

$.get("test.php", function(data){
    window.document.location.href = $(this).attr("href");
});