0

クリックすると、サーバーからファイルをダウンロードするColdFusionページを処理するためのリンクがあります。URLで直接ファイルにアクセスすると、正常に機能するので、その部分が機能していることがわかります。次のステップは、ユーザーがシームレスに操作できるようにajaxを導入することです。これは、ajax呼び出しを使用した私のイベントハンドラーです(イベントハンドラーは、最初のページの読み込み時に呼び出されます)。

function fileHandler(){
    $('#attachment').click(function(e){
        e.preventDefault();
        $.ajax({
            type:"get",
            url:"test.cfm",
            data:{name:"john"}
        });
    });
}

しかし、私は何も得られません。jQueryの.ajax()を使用するのはこれが初めてです。私は通常、.get()と.load()を使用します。ドキュメントを確認しましたが、構文は正しいようです。ファイルを保存するためのブラウザプロンプトが表示されない理由の問題を誰かが見ていますか?ありがとう!

4

1 に答える 1

3

Ajax(XMLHTTPRequest)を介して「名前を付けて保存」ダイアログをトリガーすることはできません。Ajax呼び出しは、サーバーからjavascriptアプリケーションにデータを返します。これが、Ajaxの使用に関する重要なポイントです。ファイルをダウンロードしてコンピューターに保存することは、単なる別のユースケースです。これは「ブラウザーの仕事」であり、あなたの仕事ではありません。

非表示のiframeをページに追加することで「問題」を解決しました。これにより、[名前を付けて保存...]ダイアログが表示され、ユーザーは気付かないでしょう。これは、別のタブでアドレスを開くようなもので、非表示になっているだけです。

$('body').append(
    $('<iframe>', { 
        src: 'test.cfm?name=john' 
    }).hide()
);
于 2012-08-23T13:24:26.390 に答える