【问题标题】:POST multiple parameters [closed]POST多个参数[关闭]
【发布时间】:2025-12-14 18:35:01
【问题描述】:

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

【问题讨论】:

    标签: html http jsp post


    【解决方案1】:

    是我错了还是大部分答案都跑题了?

    要准确回答您的问题,是的,您可以将逗号分隔的列表提交给 POST 参数。老实说,我只是快速尝试了一个 PHP 脚本,但我不明白为什么 Java 会有不同的行为。 POST 请求的一点恰恰是您对语法的限制要少得多(无需转义 = & 等)。

    因此,如果您更详细地解释什么“不起作用”,也许我们可以为您提供更多帮助。

    【讨论】:

      【解决方案2】:

      您可以像选择表单输入一样进行操作:

      url?param=value1&param=value2&param=value3

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


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

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

      【讨论】:

        【解决方案3】:

        芬恩是对的。使用

        url?param=value1&param=value2&param=value3
        

        为单个参数设置多个值。要读取 Servlet/JSP 中的值,您可以使用

        String[] values = request.getParameterValues("param");
        

        【讨论】:

          【解决方案4】:

          设置为通过将参数命名为数组来传递多个值。 不要将输入称为“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>
          

          处理时,记得提取命名参数发送的值数组。

          【讨论】:

            【解决方案5】:

            您可以使用

            传递多个参数
                    xmlhttp
                            .send("files=" + files.value + "&tagcount="
                                    + tagcount.value);
            

            这里 filestagcount 是要传递的参数的 id。这适用于我的 Ajax 脚本。一般情况下你可以通过&来添加参数。所以参数看起来像

            "parameter1=" + parameter1.value + "&parameter2=" + parameter2.value
            

            【讨论】:

              【解决方案6】:

              在发布请求中,参数列表中应该有至少 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);
              

              }

              【讨论】:

                【解决方案7】:

                GET 和 POST 有两种不同的用途。来自* HTTP 条目:

                获取

                请求指定资源的表示。请注意,GET 不应用于会导致副作用的操作,例如在 Web 应用程序中使用它来执行操作。这样做的一个原因是 GET 可能被机器人或爬虫任意使用,它们不需要考虑请求应该引起的副作用。请参阅下面的安全方法。

                发布

                将要处理的数据(例如从 HTML 表单)提交到已识别的资源。数据包含在请求的正文中。这可能会导致创建新资源或更新现有资源或两者兼而有之。

                基本上,您应该使用 GET 来获取信息,并使用 POST 来执行任何更改服务器状态的操作,例如添加新记录。

                【讨论】: