2013-06-28 78 views
1

我在同一頁面上有很多鏈接。鏈接將開始不同的下載。 我想要做的是,當一個鏈接被點擊以開始下載時,我也想要將iframe位置更改爲一個php頁面來增加一個下載點擊計數器。javascript在點擊鏈接時更改iframe位置

代碼需要在每個鏈接的onClick事件中,因爲我在同一頁上有這麼多。

我想是這樣的:

<a href="download001.zip" onClick="iframe.location.href='hits_counter.php?file=download001>Start download 001</a><br> 
<a href="download002.zip" onClick="iframe.location.href='hits_counter.php?file=download002>Start download 003</a><br> 
<a href="download003.zip" onClick="iframe.location.href='hits_counter.php?file=download003>Start download 003</a><br> 
... 

這兩起事件必須被激活:下載該文件,並更改了iframe HREF

+1

你爲什麼不只是使PHP腳本都會計算*和*服務內容? – Bergi

回答

0

,如果你有很多,的onClick不使用該解決方案

jquery你可以用類似的東西來處理它們:

$("a").click(function(){ 
    $.get("hits_counter.php",{ file:$(this).attr("href") }); 
}); 

並且不再需要iframe

+0

我真的需要使用iframe,因爲命中計數器是在不同的服務器上,我不能跨域提交工作....「文件=」(獲取)的價值是不同於href ... 。我只是用它來簡化我的例子 –

0

您可以提供文件並從服務器端增加計數器。發送文件下載的代碼如下。所以,你可以hits_counter.php是這樣

$file = $_GET['filename']; 

if (file_exists($file)) { 
    header('Content-Description: File Transfer'); 
    header('Content-Type: application/octet-stream'); 
    header('Content-Disposition: attachment; filename='.basename($file)); 
    header('Content-Transfer-Encoding: binary'); 
    header('Expires: 0'); 
    header('Cache-Control: must-revalidate'); 
    header('Pragma: public'); 
    header('Content-Length: ' . filesize($file)); 
    ob_clean(); 
    flush(); 
    readfile($file); 

    //increment counter based on file name 
    exit; 
} 


來源 - http://php.net/manual/en/function.readfile.php

+0

問題是我沒有託管文件的服務器上的MySQL。命中計數器需要在另一臺服務器上,這就是爲什麼我想把查詢發送到iframe –