POST多个参数

时间:2008-10-07 09:57:42

标签: html http jsp post

我正在将GET更改为POST。目前我有.jsp?id = a,b,c,d。将此更改为帖子时,我仍然会使用id参数a,b,c,d。这不适合我。我可以将逗号分隔列表提交给post参数吗?

7 个答案:

答案 0 :(得分:14)

您可以像选择表单输入一样:

URL PARAM =值1&安培; PARAM =值2&安培; PARAM =值3

根据您的语言和库,您应该能够获得param的值数组。


例如使用asp.net mvc我这样做是为了得到一个字符串数组:

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

答案 1 :(得分:14)

菲永是对的。使用

url?param=value1&param=value2&param=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 + "&parameter2=" + 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。