2011-03-09 79 views

回答

0

您可以使用jQuery來確定單個用戶在給定的完全呈現的頁面上點擊給定鏈接的次數,並使用該值通過AJAX更新下載點擊的數據庫表,但jQuery沒有任何直接瞭解您的服務器端數據與下載總數相關,您將不得不用數據更新數據庫並從那裏顯示數據。您可以使用jQuery來觀察並查看該值是否更改(可能是定時器)並相應地更新頁面,但仍需要AJAX調用數據庫查找。

jQuery是一個Javascript庫,它是一種客戶端語言,一旦它下載並運行在客戶端機器上,就會在頁面上起作用,因此這不是服務器端邏輯和查找的地方,除非情況在哪裏AJAX是保證和需要。

0

這是不可能的。 jQuery代碼在用戶的瀏覽器中運行,而不是在服務器上運行。要計算下載量,您需要使用服務器端代碼。

0

jQuery本身無法做到這一點。

每次請求文件時,您都必須跟蹤服務器。

1

您可以創建腳本download.php來計算您的下載鏈接。

<?php 

// connect to database 
if (isset($_GET['file'])) { 
    $file = mysql_real_escape_string($_GET['file']); 
    $query = "insert into downloads VALUES('$file', 1) on duplicate key " . 
     "update count = count + 1;, count+1)"; 
    mysql_query($query); 
} 
?> 

下載表:

create table downloads(file VARCHAR(255) primary key, count integer default 1) 

和jQuery的

$('a.download').click(function() { 
    //empty function don't care what I get. 
    $.get('download.php', {file: $(this).attr('href')}, function() {}); 
}); 

調用它的download.php腳本有下載類

UPDATE每一個環節上href屬性我忘了添加返回false,因爲在c在它上面調用ajax然後中止它。

$('a.download').click(function() { 
    var link = $(this).attr('href'); 
    $.get('download.php', {file: link}, function() { 
     // change url to link when ajax is finished 
     window.location = link; 
    }); 
    // prevent following the link 
    return false; 
}); 

您還可以添加代碼,防止多次點擊,因爲會有一個元素的鏈接Ajax調用完成和改變URL之間的延遲(用戶可以點擊幾次,因爲它不會folow中的鏈接),你可以添加CTRL +點擊,因爲它打開了其他窗口中的鏈接(在這種情況下可以返回true)。

+0

你能詳細解釋一下嗎? jQuery代碼如何鏈接到下載文件鏈接? – Future2020 2012-05-16 16:02:17

+0

您通過文件查詢參數將ajax鏈接的href發送到download.php腳本。如果用戶點擊a.download鏈接它執行download.php腳本,我忘記添加返回false並更改位置作爲響應。 – jcubic 2012-05-16 17:36:04

0

是否有修改上面的腳本,允許每個用戶在設定的時間內下載1次,這取決於他們加入網站的日期,即用戶每年只能從他們一天下載文件一次加入該網站?

我使用Wordpress運行我的網站。

謝謝