web-dev-qa-db-ja.com

POST複数のパラメータ

GETをPOSTに変更します。現在、私は.jsp?id = a、b、c、dを持っています。これを投稿に変更するとき、私はまだidパラメータa、b、c、dを座っています。これではうまくいきません。コンマ区切りのリストを投稿パラメーターに送信できますか?

13
John

私は間違っているのですか、それともほとんどの答えが間違っていますか?

あなたの質問に正確に答えるには、はい、カンマ区切りのリストをPOSTパラメータに送信できます。正直に言うと、PHP =スクリプトですが、なぜJavaの動作が異なるのかわかりません。POSTリクエストの1つのポイントは、構文に対する制約がはるかに少ないことです(いいえエスケープする必要がある&&など)。

したがって、「うまくいかない」ことを詳しく説明すると、おそらく私たちはあなたをさらに助けることができます。

13
PhiLho

あなたはそれを選択フォーム入力のように行うことができます:

url?param = value1&param = value2&param = value3

言語とライブラリに応じて、paramの値の配列を取得できるはずです。


たとえばasp.net mvcでは、これを実行して文字列の配列を取得します。

string[] values = Request.Form.GetValues("param");
14
Fionn

Fionnは正しいです。使用する

url?param=value1&param=value2&param=value3

複数の値を単一のパラメーターに設定します。使用できるサーブレット/ JSPの値を読み取るには

String[] values = request.getParameterValues("param");
14
Olvagor

パラメーターに配列として名前を付けることにより、複数の値を提供するように設定します。入力 "id"を呼び出す代わりに、 "id []"と呼びます。

<form method="post">
<select multiple name="id[]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" value="send">
</form>

処理するときは、名前付きパラメーターによって送信された値の配列を抽出することを忘れないでください。

3
random

を使用して複数のパラメータを渡すことができます

        xmlhttp
                .send("files=" + files.value + "&tagcount="
                        + tagcount.value);

ここでfilesおよびtagcountは、渡されるパラメーターのIDです。これは私のAjaxスクリプトで機能していました。通常の場合、パラメーターはで追加できます。したがって、パラメータは次のようになります。

"parameter1=" + parameter1.value + "&parameter2=" + parameter2.value
1
WR10

ポストリクエストでは、パラメータリストに最低1つのパラメータが必要です。リクエストにパラメータを追加している場合、機能しません。そのため、フォームの非表示フィールドとしてパラメーターを送信する必要があります。または、次のコードを使用してみてください

function makePOSTRequest(url、parameters){

  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
        // set type accordingly to anticipated content type
        //http_request.overrideMimeType('text/xml');
        http_request.overrideMimeType('text/html');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }

  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);

}

0
user25778

GETとPOSTには2つの異なる目的があります。ウィキペディアのHTTPエントリから:

GET

指定されたリソースの表現を要求します。 GETは、Webアプリケーションでアクションを実行するために使用するなど、副作用を引き起こす操作には使用しないでください。この理由の1つは、GETがロボットまたはクローラーによって任意に使用される可能性があるためです。これにより、要求が引き起こす副作用を考慮する必要がなくなります。以下の安全な方法を参照してください。

POST

処理するデータを(HTMLフォームなどから)識別されたリソースに送信します。データはリクエストの本文に含まれています。これにより、新しいリソースの作成、既存のリソースの更新、またはその両方が発生する可能性があります。

基本的に、GET to、GET、GET情報、およびPOSTを使用して、新しいレコードの追加など、サーバーの状態を変更するアクションを実行する必要があります。

0
Chris Lawlor