2011-07-17 93 views
0

我有以下单击事件,它调用codeigniter方法来更新我的数据库。它用于跟踪链接点击。它在IE9中工作,但不在Firefox 3.6.3中工作。firefox中的jQuery点击事件问题

$(".link").click(function(event) { 
    $.get('<?= base_url() ?>ajax/click_out/' + $(this).attr("site_id")); 
}); 

它调用正确的php文件并发送正确的信息,但得到一个空的响应。如果我在获取后添加警报,它会起作用,而且如果我阻止默认事件,它也会起作用。是否有可能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和希望得到任何帮助我能!

回答

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/

+2

'= link.href' .. – SLaks

+0

@SLaks:TNX: ).. – Rafay

0

在黑暗中只是一个镜头,但你可以尝试这样的事情...

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