2010-05-20 72 views
8

相當尷尬,我花了多少時間試圖去從一個按鈕下載壓縮文件....jQuery從按鈕下載zipfile?

<button type='button' id='button-download'>download zipfile</button> 


$("#button-download").live("click", function() { 
    $.get("http://localhost/admin/zip/002140.zip"); // doesn't work? 
}) 

我需要的東西防彈這裏,這就是爲什麼我在這裏問了,謝謝。

回答

7

使用純:

<a href="http://localhost/admin/zip/002140.zip" id="button-download">download zipfile</a> 

鏈接。如果沒有可用的JavaScript,它就可以正常工作(甚至是「防彈」)。它還提供了更多的用戶可能期望從下載鏈接獲得的傳統功能,例如右鍵單擊,保存或拖放。

你當然可以使用CSS來使它看起來像一個按鈕而不是鏈接。但是它究竟是還是是一個鏈接。所以這就是它應該被標記的方式。

+0

謝謝我使用這個作爲「下載問題?」下的備份?它在JavaScript中,但它是一個管理面板,我的用戶需要在任何地方啓用JavaScript。 – FFish 2010-05-21 00:17:38

5

您應該設置location.href屬性使導航:

$("#button-download").live("click", function() { 
    location.href = "http://localhost/admin/zip/002140.zip"; 
}); 

你也可以有一個簡單的<a>元素,風格就好像它是一個按鈕,以這種方式甚至誰已經禁用了JavaScript將是用戶能夠下載該文件。

+0

哎,location.href,該上牀睡覺了! – FFish 2010-05-20 23:29:06

+0

其實我有一個問題,當使用此或window.location我失去了我的DOM由jQuery創建。這不是一個問題,雖然頁面變得更糟-1,就像點擊後退按鈕一樣? WTF? – FFish 2010-05-20 23:38:45

+0

如果您在本文後5年訪問此處,'.live()'在jquery 1.9中被刪除,所以使用'.on()'。 (感謝下面的PaparazzoKid) – 2015-11-18 23:23:49

1

這是發送一個AJAX請求。

我沒有試過這個,但它應該在理論上工作。如果您嘗試去下載文件的位置,它會提示您下載,而不是將您帶到該頁面。

<button type='button' id='button-download'>download zipfile</button> 


$("#button-download").live("click", function() { 
    window.location = "http://localhost/admin/zip/002140.zip"; 
}) 
+1

對於未來的衝浪者,而不是'.live()'使用'.on()'。 '.live()'在jQuery 1.9中被刪除。 – TheCarver 2014-07-15 01:28:13

1

晚會晚了,但認爲我會分享我的解決方案,因爲沒有其他人。

你可以兩全其美;一個簡單的HTML鏈接和一個JS函數,而不會丟失非JS用戶。

<a id="download" href="http://www.example.com/download.zip">Download</a> 

$("#download").on("click", function(e) { 

    // cancel the link's original functionality 
    e.preventDefault(); 

    // do something before downloading 
    alert("Thanks for downloading!"); 

    // download file 
    location.href = "http://www.example.com/download.zip"; 

});