【问题标题】:Use form button to submit GET value使用表单按钮提交 GET 值
【发布时间】:2016-01-27 09:57:43
【问题描述】:

我有以下代码来提交 GET 值:

<form method="GET">
 <input type="hidden" name="price" value="ASC" />
  <input type="submit" value="Price Low to High" />
</form>

<form method="GET">
 <input type="hidden" name="price" value="DESC" />
  <input type="submit" value="Price High to Low" />
</form>

<form method="GET">
 <input type="hidden" name="price" value="" />
  <input type="submit" value="Default" />
</form>

哪个工作正常。所以我不会用三个表单重复自己,有没有办法我可以有一个表单,并定义按钮提交的 GET 值?他们仍然需要让用户可以看到相同的信息,例如提交DESC的按钮需要显示为Price High to Low

【问题讨论】:

  • 将它们全部合并到一个表单中,并在您的submit buttns. 上添加name,例如&lt;input type="submit" value="Default" name="action" /&gt;
  • 为什么不用链接而不是表单?对于表单,您可以在提交之前使用 javascript 来切换值。

标签: php html forms


【解决方案1】:

使用此代码:

<form method="GET">
  <input type="submit"  name="price" value="ASC">Price Low to High</input>
  <input type="submit" name="price" value="DESC"  >Price High to Low</input>

 <input type="submit" name="price" value="" >Default</input>
</form>

【讨论】:

    【解决方案2】:

    如果设计上没有强制使用三个按钮,那么我建议,为什么不直接使用select 让用户决定他想要什么(大多数网站已经这样做了)

    <form method="GET">
     <select id="price" name="price">
       <option value="">Default</option>
       <option value="ASC">Price Low to High</option>
       <option value="DESC">Price High to Low</option>
     </select>
     <input type="submit" value="Price Low to High" />
    </form>
    

    Demo

    如果需要三个按钮,您可以执行以下任一操作(但不限于)..

    1. 使用普通链接(&lt;a&gt; 锚标签),是的,你没看错,因为表单只是使用 $_GET 方法提交,最终数据将在 URL 内,所以为什么不直接首先使用“buttons”的href 属性将它放在那里?

    2. 使用@Aref Anafgeh 建议的解决方案,并有三个提交按钮,每个按钮都有不同的值,让html 处理将哪个值发送到服务器。

    3. 使用 JavaScript 并进行 ajax 调用,这几乎可以让您处理请求中发送的和未发送的内容。

    【讨论】:

      【解决方案3】:

      试试这个代码。

      <!DOCTYPE html>
      <html>
          <body>
      <?php
      if ($_SERVER["REQUEST_METHOD"] == "GET") 
          {
             echo "Form Submited by ".$_GET['submitbutton']." Button";
          } 
      ?>      
              <form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
                  <input type="hidden" name="price" value="ASC" />
                  <input type="submit" value="Price Low to High" name="submitbutton"/>
              </form>
      
              <form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
                  <input type="hidden" name="price" value="DESC" />
                  <input type="submit" value="Price High to Low" name="submitbutton"/>
              </form>
      
              <form method="GET" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
                  <input type="hidden" name="price" value="" />
                  <input type="submit" value="Default" name="submitbutton"/>
              </form>
      
              <script>
              </script>
          </body>
      </html>
      

      【讨论】:

      • action 不应引用PHP_SELF,尽管注意到使用 htmlspecialchars,但这种方法存在很大的潜在安全漏洞。 mc2design.com/blog/article/…
      • 我可以用#代替,我可以留空。
      • $_SERVER['script_filename'] 将工作。 # 不提交表单,需要填写 action 元素。许多人使用 PHP_SELF 作为一个次要快捷方式,但它有严重的问题。
      【解决方案4】:
      <form method="get">
      
      <select name="sort">
        <option value="asc">Ascending</option>
        <option value="desc">Descending</option>
        <option value="default">Default</option>
      </select>
      
      <button name="price">Sort price ascending</button>
      </form>
      

      剪辑

      <?php if ($_GET['sort'] == "asc") {
      // Do something
      } elseif ($_GET['sort'] == "desc") {
      // Do something else 
      }
      // etc
      ?>
      

      指向http://url/?price=XXX 的超链接也可以正常工作,因为您使用的是GET

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        • 2013-04-10
        • 2012-02-12
        • 2020-12-03
        • 2012-04-08
        • 2021-10-17
        • 1970-01-01
        相关资源
        最近更新 更多