2013-06-28 4 views
1

У меня есть много ссылок на этой же странице. Ссылки начнут разную загрузку. Что я хочу сделать, так это то, что при нажатии ссылки, чтобы начать загрузку, я также хочу изменить местоположение iframe на php-страницу, чтобы увеличить счетчик обращений к файлам.javascript change iframe location при нажатии ссылки

Код должен быть в событии 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, потому что счетчик обращений находится на другом сервере, и я не могу получить перекрестный домен для работы ... также значение «file =» (get) отличается от 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 –