0

動的に生成された Javascript フォームからサーブレットの doPost メソッドを呼び出す際に問題に直面しています。

var form = document.createElement("form");

    form.setAttribute("action", 'cisco-fetch-devices');
    form.setAttribute("method", 'POST');

    var hiddenField = document.createElement("input");
    hiddenField.setAttribute("type", "hidden");

    hiddenField.setAttribute("name", 'hiddeninputfield');
            hiddenField.setAttribute("value", data);

    form.appendChild(hiddenField);
    document.body.appendChild(form);

    form.submit();

ただし、jquery ajax 呼び出しから同じサーブレット「cisco-fetch-devices」を呼び出すことができます。

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

JS 動的フォームの送信で「ファイルが見つかりません」というエラーが発生する

ここに私のdoPostメソッドがあります:

 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
        {



            response.setContentType("text/csv");
            response.setHeader ("Content-Disposition", "attachment;filename=\"tableincsv.csv\"");

             String orderId = request.getParameter("orderId").toString();
             java.io.PrintWriter out = response.getWriter();
             out.print("TEST DAta");


        }

JS の従来の POST 呼び出しの問題点を教えてください。

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

4

1 に答える 1

1

送信するデータは同じではありません。hiddeninputfieldフィールドには という名前を付けorderId、オーダー ID で初期化する必要があります。別の方法として、リクエスト パラメータを解析することもできますがhiddeninputfield、それはばかげているように思えます。

jQuery 呼び出しは、orderIdフォーム値を正しく送信します。

これをデバッグするのは、それorderIdnullサーブレットにあることを確認するか、ブラウザーから送信された実際のリクエストを見て、どのパラメーターがどのように送信されているかを確認することで、非常に簡単でした。

于 2012-06-08T12:40:22.790 に答える