0

SO ここに状況があります: 私は動的な Web ページを持っています。リンク (またはボタン) が続く「選択」フォームがあります。ユーザーがリンクをクリックすると:

  1. 選択オプションが「表示」の場合、データ (JQuery 経由で AJAX を介して供給) が表示されます。これは完了です。問題はありません。

  2. オプションがダウンロードの場合、リンク (またはボタン) をクリックしてデータをダウンロード可能にするにはどうすればよいですか????

「ダウンロード」オプションの場合、AJAX から返される結果は単なる CSV テキストです。これはファイルではなく、単なる JavaScript 文字列です。ダウンロード可能なファイルにするにはどうすればよいですか?

4

3 に答える 3

3

これを試してください:http://jsfiddle.net/vpnQe/

自由に遊んでください。あなたのニーズに役立つことを願っています:)

コード

var URL = window.webkitURL || window.URL;
var BlobBuilder = window.WebKitBlobBuilder || window.MozBlobBuilder || window.BlobBuilder;

var url;

$("button").click(function() {
    if (url) URL.revokeObjectURL(url);
    var bb = new BlobBuilder();
    bb.append("it works!");
    var file = bb.getBlob("text/plain");
    url = URL.createObjectURL(file);
    $("a[download]").attr("href", url);

    var evt = document.createEvent('MouseEvents');
    evt.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    $("a[download]")[0].dispatchEvent(evt);
});​

HTML

<article>
    <button type="button">create url, put it in below link, and click it</button><br/>
    <a download="test.txt">Download as text.txt</a>
</article>
<footer>
<ul>
    <li><a href="https://developer.mozilla.org/en/Document_Object_Model_(DOM)/window.URL.createObjectURL">window.URL.createObjectURL</a></li>
    <li><a href="http://updates.html5rocks.com/2011/08/Downloading-resources-in-HTML5-a-download">a[download]</a></li>
</ul>
</footer>​
于 2012-08-06T23:53:39.387 に答える
0

「ダウンロード」オプションが選択されているときに新しいウィンドウを開き、サーバー側で適切なヘッダーを使用して、このコンテンツをウィンドウに表示するのではなく、ファイルにダウンロードする必要があることをブラウザーに伝えることをお勧めします。ヘッダーは主に、ダウンロードするものによって異なります。たとえば、PHP を使用した CSV を使用する場合です (サーバー側で使用する言語がわからないため)。

<?php
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"my-data.csv\"");

// output the content of your file here

?>
于 2012-08-06T23:54:24.867 に答える
0

この例を見てください。

http://drupal.org/node/417866

実行中のApacheの場合、各ディレクトリの制御方法が変更されるため、コードに記述する必要はありません。情報がクライアントに配信される方法を .htaccess が制御する場所に配置するだけです。

于 2012-08-07T00:15:02.120 に答える