8

很尴尬我花了多少时间试图从一个按钮下载一个 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?
})

我在这里需要一些防弹的东西,这就是我在这里问的原因,谢谢。

4

4 回答 4

7

使用普通的:

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

关联。然后它会在没有 JavaScript 可用的情况下正常工作(甚至“防弹”)。它还提供了用户可能期望从下载链接获得的更多传统功能,例如右键单击另存为或拖放。

你当然可以使用 CSS 让它看起来像一个按钮而不是一个链接。但它实际上是一个链接。所以这就是它应该被标记的方式。

于 2010-05-20T23:44:45.547 回答
5

您应该设置该location.href属性以导致导航:

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

您还可以有一个简单的<a>元素,其样式就像一个按钮,这样即使禁用了 JavaScript 的用户也可以下载该文件。

于 2010-05-20T23:26:12.347 回答
1

那就是发送一个 AJAX 请求。

我还没有尝试过,但它应该在理论上有效。如果您尝试转到已下载文件的位置,它会提示您下载而不是带您到该页面。

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


$("#button-download").live("click", function() {
    window.location = "http://localhost/admin/zip/002140.zip";
})
于 2010-05-20T23:26:23.890 回答
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";

});
于 2014-07-15T01:36:13.367 回答