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