簡體   English   中英

具有Javascript onclick事件的HTML超鏈接

[英]HTML hyperlink with Javascript onclick event

如何制作超鏈接以下載上傳文件,並同時更新其數據庫?

目前,我可以下載文件,但它不會更改文件狀態。

這是我的代碼

<a href="reports/<?php echo $row['file']; ?>" target="_blank"  onclick="return runMyFunction();">Docx</a> 

<script type="text/javascript">
    Cufon.now(); 
    function runMyFunction() {
        <?php   
             mysql_query("update report_upload set status=1 from report_upload where year='$year' AND area='$area'",$conn);    
        ?>
        return true;
    }   
</script>

try1 .html

<form id='login' action='adminReportDownload.php' method='POST' enctype='multipart/form-data'>
                                                            <input type="hidden" value="<?php echo $area;?>" name="yeara">
                                                            <input type="hidden" value="<?php echo $year; ?>" name="yeary">
                                                            <input type="hidden" value="<?php echo $abc123; ?>" name="abc123">
                                                            <input type="submit" name="submit" id="submit" value="Download">
                                                            </form>

.php文件

$a = $_POST['yeara'];
$b = $_POST['yeary'];
$c = $_POST['abc123'];
$file_path = 'reports/'.$c;
$sqlABC = "UPDATE report_upload SET status='1', usedBy='$sesId' where year='$b' AND area='$a' ";
$eviABC = mysql_query( $sqlABC, $conn );

header("location: reports/$c");

因為PHP是服務器端的,所以它在瀏覽器顯示網頁之前執行。 因此,您的JavaScript函數runMyFunction除了return true;什么runMyFunction包含return true; 聲明。

特別是由於嘗試從客戶端執行服務器端操作是一個壞主意,因此更好的解決方案可能是使鏈接指向指向PHP頁面的鏈接,該頁面同時發送文件並更新數據庫。

為了進一步閱讀, 有關PHP readfile問題可能會有所幫助。

您可以通過單擊鏈接將發帖請求發送到服務器來實現。

  1. 在事件處理程序上,通過e.preventDefault(); e.stopPropagation()防止默認行為e.preventDefault(); e.stopPropagation() e.preventDefault(); e.stopPropagation()
  2. 編寫ajax方法以將請求發布到服務器
  3. 在服務器端,更新數據庫,然后將文件寫入前端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM