2

質問の文言がわかりにくいことをあらかじめお詫び申し上げますが、その書き方がわかりませんでした。

私は基本的に、ユーザーがダウンロードできるようにする予定の文字列をデータベースに持っています。どうすればこれを行うことができますか?

私はajaxを使おうとしていましたが、どうすればよいかわかりませんでした。

ダウンロードリンクが押されると、次のjqueryコードが実行されます

$.ajax({

    url: 'index.php/script/downloadFile',
    type: 'post',
    data: {name: $(this).text()}

});

関連するPHPコードは次のようになります。

public function downloadScript(){

    $name = $_POST['name'];

    $filename = $name . ".txt";
    $string = //String that comes from database using name to create query
    $filename = $name . ".txt";

    header('Content-type: text/plain');
    header('Content-Disposition: attachment; filename="' . $filename . '"');
    header("Content-Length: " . strlen($string));
    header("Connection: close");

    echo $string;
}

基本的に、ユーザーがテキストファイルとしてダウンロードできるように文字列を配置する必要があります。AJAXがこれを行う正しい方法であるかどうか、または同じタスクを行うためのより良い方法があるかどうかはわかりませんでした。(私は、隠されたiframeを何らかの方法で組み込むのがより良い方法だと思っていました)

もう少し詳しくは、要素のリストがあります。

  • ジョン
  • ジェフ
  • ジョー
  • ジャック
  • クリックすると、その要素の名前のテキストをphpファイルに送信してクエリを作成します。

    そのため、ファイルのダウンロードを開始するための簡単なhrefセットアップがありません。

    編集:

    私がそれをしている間、とにかくこれらのファイルを複数取得することはできますか?たとえば、データベースから返される複数の文字列があり、それらを別々のテキストファイルとして保存し、それらを圧縮して、ユーザーに送信します?または、サーバーに保存する必要がありますか?

    どんな助けでも大歓迎です!

    4

    1 に答える 1

    3

    あなたはそれをリンクにすることができます

    <ul>
        <li class="click_link">John</li>
        <li class="click_link">Bob</li>
    </ul>
    
    <script>
    $('li').click(function(e) {
        window.location.href = 'getfile.php?name=' + $(this).text();
    });
    </script>
    

    次に、をに変更$_POSTします$_GET

    これにより、ヘッダーが正しく設定されている限り、ファイルがダウンロードされます。

    于 2012-07-13T19:29:10.897 に答える