我正在将 GET 更改为 POST。目前我有 .jsp?id=a,b,c,d。将其更改为帖子时,我仍然使用 id 参数 a,b,c,d 。这对我不起作用。我可以将逗号分隔的列表提交给 post 参数吗?
7 回答
您可以像选择表单输入一样进行操作:
url?param=value1¶m=value2¶m=value3
根据您的语言和库,您应该能够获得参数值的数组。
例如,使用 asp.net mvc 我这样做是为了获取一个字符串数组:
string[] values = Request.Form.GetValues("param");
芬恩是对的。采用
url?param=value1¶m=value2¶m=value3
为单个参数设置多个值。要读取 Servlet/JSP 中的值,您可以使用
String[] values = request.getParameterValues("param");
我错了还是大多数答案都是题外话?
要准确回答您的问题,是的,您可以将逗号分隔的列表提交给 POST 参数。老实说,我只是快速尝试了一个 PHP 脚本,但我不明白为什么 Java 会有不同的行为。POST 请求的一点恰恰是您对语法的限制要少得多(无需转义 = & 等)。
因此,如果您更详细地解释什么“不起作用”,也许我们可以为您提供更多帮助。
设置为通过将参数命名为数组来传递多个值。不要将输入称为“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
在发布请求中,参数列表中应该有至少 1 个参数。如果您将参数附加到请求,那么它将不起作用。为此,您需要将参数作为表单的隐藏字段发送。或尝试使用以下代码
函数 makePOSTRequest(url, 参数) {
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 有两个不同的目的。来自维基百科 HTTP 条目:
得到
请求指定资源的表示。请注意,GET 不应用于会导致副作用的操作,例如在 Web 应用程序中使用它来执行操作。这样做的一个原因是 GET 可能被机器人或爬虫任意使用,它们不需要考虑请求应该引起的副作用。请参阅下面的安全方法。
邮政
将要处理的数据(例如,从 HTML 表单)提交给已识别的资源。数据包含在请求的正文中。这可能导致创建新资源或更新现有资源或两者兼而有之。
基本上,您应该使用 GET 来获取信息,并使用 POST 来执行任何更改服务器状态的操作,例如添加新记录。