ajax函数后重定向到另一个页面

时间:2012-10-10 15:39:13

标签: ajax redirect download counter

任何人都可以帮助我,我正在尝试为我的网站创建一个下载计数器。 当用户点击下载链接时,我有一个ajax脚本,数量增加1,我遇到的问题是在完成ajax计数脚本之前,它会进入下载链接。 有一种方法可以在脚本完成后重定向到下载文件。目前我有如下

这是链接: -

<a href='downloads/".$downfile."' onclick=\"Counter('$referid');\"'>Download File</a>

这是反脚本: -

<script type="text/javascript">
    function Counter(id)
        {
      $.get("clickcounter.php?id="+id);
      {
          return false;
      }
    }
</script>

这是php脚本(clickcounter.php)

<?php
include('dbutils.php'); 

$referid = $_GET['id'];

$q = "SELECT * FROM downloads WHERE downid =".$referid;
$r = mysql_query($q);
while ($row = mysql_fetch_array($r))
{
$click = stripslashes(trim($row['downcount']));
$download = $row['downfile'];


}

$countup = $click + 1;

$qUpdate = "UPDATE downloads
SET downcount=$countup
WHERE downid=$referid";
$rUpdate = mysql_query($qUpdate);

?>

1 个答案:

答案 0 :(得分:0)

一些相对较小的修改应该可以解决问题。首先,将onclick更改为以下内容:

onclick=\"Counter('$referid', this); return false;\"

我们所做的是将 this 作为第二个参数发送到Counter函数,以便我们引用所点击的链接。其次,我们添加了 return false ,这会阻止浏览器导航到href中指定的网址。

修改后的计数器功能如下所示:

function Counter(id, link) {
   $.get("clickcounter.php?id=" + id, function() {
      location.href = $(link).attr("href");
   });
}

我们现在有一个对点击链接的引用。现在已将函数指定为$ .get()的第二个参数。这是成功函数,在成功调用ajax调用时调用。在该函数内部,我们现在重定向到单击链接上的href属性中指定的url。

我觉得我应该指出,推荐的方法是使用与html分开的jQuery来绑定onclick。 referid可以存储在data属性中(我选择调用data-rid):

<a href='downloads/".$downfile."' class='dl' data-rid='$referid'>Download File</a>

然后绑定所有下载链接的onclick(带有“dl”类的元素):

$(function() {
    $("a.dl").click(function() {
       var id = $(this).attr("data-rid");
       var href = $(this).attr("href");

       $.get("clickcounter.php?id=" + id, function() {
          location.href = href;
       });   

       return false;
    });
});​

(我觉得我应该指出代码还没有经过测试,因此有可能在某个地方发生了错误信息)