GET を POST に変更しています。現在、私は .jsp?id=a,b,c,d を持っています。これを投稿に変更するとき、私はまだ id パラメータ a,b,c,d を座っています。これは私にとってはうまくいきません。コンマ区切りのリストを post パラメータに送信できますか?
7 に答える
選択フォーム入力のように行うことができます:
url?param=値1¶m=値2¶m=値3
言語とライブラリによっては、param の値の配列を取得できるはずです。
たとえば、asp.net mvc では、これを実行して文字列の配列を取得します。
string[] values = Request.Form.GetValues("param");
フィオンは正しい。使用する
url?param=value1¶m=value2¶m=value3
複数の値を 1 つのパラメーターに設定します。サーブレット/JSP の値を読み取るには、次を使用できます。
String[] values = request.getParameterValues("param");
私は間違っていますか、それともほとんどの答えは的外れですか?
あなたの質問に正確に答えるために、はい、カンマ区切りのリストを POST パラメータに送信できます。正直に言うと、PHP スクリプトを使って簡単に試してみただけですが、なぜ Java の動作が異なるのかわかりません。POST リクエストの 1 つのポイントは、構文に対する制約がはるかに少ないことです (= & などをエスケープする必要はありません)。
そのため、「うまくいかない」ことを詳しく説明していただければ、さらにお役に立てるかもしれません。
パラメータに配列として名前を付けて、複数の値を配信するように設定します。入力を「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>
処理するときは、名前付きパラメーターによって送信された値の配列を抽出することを忘れないでください。
を使用して複数のパラメータを渡すことができます
xmlhttp
.send("files=" + files.value + "&tagcount="
+ tagcount.value);
ここで、 files とtagcountは、渡されるパラメーターのIDです。これは私のAjaxスクリプトで機能していました。通常の場合、 &でパラメータを追加するだけです。したがって、パラメータは次のようになります。
"parameter1=" + parameter1.value + "¶meter2=" + parameter2.value
GET と POST には 2 つの異なる目的があります。ウィキペディアの HTTP エントリから:
得る
指定されたリソースの表現を要求します。GET は、Web アプリケーションでアクションを実行するために使用するなど、副作用を引き起こす操作には使用しないでください。この理由の 1 つは、GET がロボットまたはクローラーによって任意に使用される可能性があるためです。ロボットまたはクローラーは、要求が引き起こす副作用を考慮する必要はありません。以下の安全な方法を参照してください。
役職
処理するデータ (HTML フォームなどから) を識別されたリソースに送信します。データはリクエストの本文に含まれます。これにより、新しいリソースが作成されるか、既存のリソースが更新されるか、またはその両方が発生する可能性があります。
基本的に、情報を取得するには GET を使用し、新しいレコードの追加など、サーバーの状態を変更するアクションには POST を使用する必要があります。
ポスト リクエストでは、パラメータ リストに少なくとも 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);
}