7

REST API 呼び出しから取得した JavaScript 変数であるセッション キーがあります。サーブレットで Java コードを呼び出し、そのキーをパラメーターとして渡す必要があります。そのためにどの JavaScript 関数を使用できますか?

4

3 に答える 3

15

いくつかの方法:

  1. window.locationGET リクエストを起動するために使用します。警告は、それが同期であることです (そのため、クライアントは現在のページが変更されているのを確認できます)。

    window.location = "http://example.com/servlet?key=" + encodeURIComponent(key);
    

    encodeURIComponent()要求パラメーターを渡す前にエンコードする組み込み関数の重要性に注意してください。

  2. form.submit()GET または POST リクエストを起動するために使用します。注意点は、同期であることです。

    document.formname.key.value = key;
    document.formname.submit();
    

    <form name="formname" action="servlet" method="post">
        <input type="hidden" name="key">
    </form>
    

    または、既存のフォームの非表示フィールドのみを設定し、ユーザーが送信するまで待つこともできます。

  3. バックグラウンドで非同期リクエストを起動するために使用XMLHttpRequest#send()します (Ajax とも呼ばれます)。以下の例では、サーブレットのdoGet().

    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://example.com/servlet?key=" + encodeURIComponent(key));
    xhr.send(null);
    

    以下の例では、サーブレットのdoPost().

    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://example.com/servlet");
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xhr.send("key=" + encodeURIComponent(key));
    
  4. jQueryを使用して、クロスブラウザー互換の Ajax リクエストを送信します (上記のxhrコードは実際のブラウザーでのみ機能します。MSIE との互換性を確保するには、いくつかの混乱を追加する必要があります ;) )。

    $.get("http://example.com/servlet", { "key": key });
    

    $.post("http://example.com/servlet", { "key": key });
    

    jQuery はすでにリクエスト パラメータをすべて透過的にエンコードしているため、encodeURIComponent()ここでは必要ありません。

いずれにせよ、サーブレットでkey使用できるようになります。request.getParameter("key")

以下も参照してください。

于 2010-01-25T12:45:14.457 に答える
1

JavaScript 関数自体はありませんが、ブラウザーは通常* XMLHttpRequestオブジェクトを提供しており、それを実行できます

YUIjQueryなどのライブラリは、その使用を簡素化するヘルパー関数を提供します。

* JavaScript をサポートし、Netscape 4 の廃止以降にリリースされたほとんどすべてのブラウザを含む「通常」の値

于 2010-01-25T12:43:07.097 に答える