2014-05-06 15 views
0

我在頁面上有一個文件列表,下一個每個文件都有一個鏈接表示刪除,只需用戶通過點擊刪除鏈接就可以將文件名傳遞給同樣的腳本,然後它從服務器刪除文件,它說在同一頁上,任何想法?如何在cgi perl上使用帶href的onclick

#some other stuff goes here such list of files 
print "<TD><a onclick='deleteFile()' href='#'>delete</a> </td>"; 

sub deleteFile() 
{ 
    unlink ($file); 
} 

我也嘗試過純和CGI Perl,當我點擊刪除鏈接它打印錯誤「內部錯誤」,但是當我查找文件,看它是否已被刪除或不那麼這個文件實際刪除所以這裏還有沒有權限問題不會刪除或斷開鏈接的文件,這裏是什麼改變:

print "<a href='../cgi-bin/deleteFile.cgi?param1=$dir&param2=$file'>delete</a>"; 

在這裏我有deleteFile.cgi我得到兩個參數1 & 2和使用不同於像下面

unlink($location); 
+0

你不能像這樣從html標籤中調用Perl子程序。 Html應該調用一個javascript函數,該函數應該在後端調用CGI文件,該文件應該調用Per子例程。而且,如果你想留在同一頁面上,請使用Ajax。 –

回答

0

你真的沒有努力去找到你自己的解決方案。我會給你一些指示...

HTML中的onclick屬性將觸發JavaScript在瀏覽器中運行(有更好的方法來使點擊事件運行Javascript代碼)。

除非瀏覽器向服務器上的CGI腳本發送請求,否則CGI腳本中的Perl代碼都不會運行。可能產生的請求的東西還包括:

  • 用戶點擊與指向CGI腳本(也許在一個查詢字符串參數文件路徑名)一個href
  • 用戶點擊一個提交按鈕鏈接形成一個指向CGI腳本的動作(可能在隱藏表單域中使用文件路徑名)
  • 瀏覽器中的一些Javascript代碼向CGI腳本發出AJAX請求(將文件路徑名作爲POST參數)

點擊一個鏈接將res在GET請求中使用ult - 通常認爲運行代碼會改變服務器的狀態(例如:刪除文件)是對GET請求的響應。

表單提交或AJAX請求可能會導致POST請求。您甚至可以通過AJAX顯式使用DELETE請求。這些是用於更改服務器狀態的更合適的請求方法。

即使您的代碼正常工作,它也只能刪除Web服務器具有寫入權限的目錄中的文件。 Web服務器通常不會配置爲默認情況下對任何目錄的寫訪問權限。

+0

謝謝格蘭特,我做了嘗試,但我覺得不夠;-) – user2912312

0

問題是刪除後沒有重定向,所以添加重定向頁面後,它像一個魅力工作.. 取消鏈接glob($文件); 打印重定向(-url =>'http://main.cgi');

謝謝