我花了多少时间试图从按钮下载一个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?
})
我需要一些防弹证明,这就是我在这里问的原因,谢谢。
答案 0 :(得分:7)
使用普通:
<a href="http://localhost/admin/zip/002140.zip" id="button-download">download zipfile</a>
链接。然后它就可以正常工作(甚至是“防弹”),而不提供JavaScript。它还提供了用户可能从下载链接中获得的更多传统功能,例如右键单击另存为或拖放。
您当然可以使用CSS使其看起来像一个按钮而不是链接。但实际是什么,是一个链接。这就是它应该被标记的方式。
答案 1 :(得分:5)
您应该设置location.href
属性以导致导航:
$("#button-download").live("click", function() {
location.href = "http://localhost/admin/zip/002140.zip";
});
您还可以拥有一个简单的<a>
元素,其样式就像是一个按钮,这样即使已禁用JavaScript的用户也可以下载该文件。
答案 2 :(得分:1)
即发送AJAX请求。
我没试过这个,但它应该在理论上起作用。如果您尝试转到已下载文件的位置,则会提示您下载而不是将您带到该页面。
<button type='button' id='button-download'>download zipfile</button>
$("#button-download").live("click", function() {
window.location = "http://localhost/admin/zip/002140.zip";
})
答案 3 :(得分: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";
});