我正在将GET更改为POST。目前我有.jsp?id = a,b,c,d。将此更改为帖子时,我仍然会使用id参数a,b,c,d。这不适合我。我可以将逗号分隔列表提交给post参数吗?
答案 0 :(得分:14)
您可以像选择表单输入一样:
URL PARAM =值1&安培; PARAM =值2&安培; PARAM =值3
根据您的语言和库,您应该能够获得param的值数组。
例如使用asp.net mvc我这样做是为了得到一个字符串数组:
string[] values = Request.Form.GetValues("param");
答案 1 :(得分:14)
菲永是对的。使用
url?param=value1¶m=value2¶m=value3
将多个值设置为单个参数。要读取Servlet / JSP中的值,可以使用
String[] values = request.getParameterValues("param");
答案 2 :(得分:13)
我错了还是大多数答案都不合适?
要准确回答您的问题,是的,您可以将逗号分隔列表提交给POST参数。说实话,我只是快速尝试使用PHP脚本,但我不明白为什么Java的行为会有所不同。 POST请求的一个要点就是你对语法的限制要少得多(不需要转义=&或者这样)。
因此,如果您详细解释“不起作用”的内容,或许我们可以为您提供更多帮助。
答案 3 :(得分:3)
设置为让您的参数通过将其命名为数组来提供多个值。 而不是调用输入“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>
处理时,请记住提取命名参数发送的值数组。
答案 4 :(得分:1)
您可以使用
xmlhttp
.send("files=" + files.value + "&tagcount="
+ tagcount.value);
此处文件和 tagcount 是要传递的参数的ID。这适用于我的Ajax脚本。在正常情况下,您只需按&amp; 添加参数即可。所以参数看起来像
"parameter1=" + parameter1.value + "¶meter2=" + parameter2.value
答案 5 :(得分:0)
在post请求中,最小1参数应该在参数列表中。如果您要将参数附加到请求,那么它将无法正常工作。 因为你需要发送参数作为形式的隐藏字段。 或者尝试使用以下代码
函数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);
}
答案 6 :(得分:0)
GET和POST有两个不同的目的。来自Wikipedia HTTP条目:
GET
请求指定资源的表示。请注意,GET不应用于导致副作用的操作,例如使用它在Web应用程序中执行操作。其中一个原因是机器人或爬虫可以任意使用GET,这不应该考虑请求应该引起的副作用。请参阅下面的安全方法。
POST
将要处理的数据(例如,从HTML表单)提交到标识的资源。数据包含在请求正文中。这可能会导致创建新资源或更新现有资源或两者。
基本上,对于任何改变服务器状态的操作,例如添加新记录,都应该使用GET,以及GET信息和POST。