0

これらのフォーラムの回答の多くは私にとって非常に有用であることがわかりましたが、私のこの問題を確認するようにお願いします.

.csvjquery メソッドによって呼び出されるサーブレットからファイルを保存しようとしています。ヘッダーとcontent-diposition. データをストリーム書き込みした後、ブラウザーにダイアログ ボックスが表示されません。

function popup(data) {
    $.post("cisco-fetch-devices", { orderId : data},
        function(data) {
            alert("Data Loaded: " + data);  
        });
    });
}

上記の jquery コードは、以下のサーブレット post メソッドを呼び出しています。

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
    response.setContentType("text/csv");
    response.setHeader ("Content-Disposition", "attachment;filename=\"tableincsv.csv\"");
    java.io.PrintWriter out = response.getWriter();
    out.print("test data");
}

データがブラウザに送り返された後、ダイアログ ボックスは表示されません。ただし、サーブレットに設定されたデータはout.print正しく表示されalert、JS メソッドのメッセージに表示されます。

これについてあなたの意見を聞かせてください。

ありがとう、アディティア

4

1 に答える 1

1

簡単な答え : データ オブジェクトをフィードできるようにするために Content-Disposition ヘッダーを無視する AJAX では実行できません。このヘッダーを尊重するブラウザーに依存する必要があります。

したがって、サーブレットで通常の POST (隠しフィールドを使用)または GET (クエリ文字列パラメーターを使用) を実行します。

または、Stackoverflow でユーザーVinodh Ramasubramania が推奨するこの jQuery Pluginを使用して、プロセスを自動化します。コードは非常に短く、まさにそれを行います...

このトピックには多数のスレッドがあります。

于 2012-06-07T13:30:04.030 に答える