【问题标题】:How do you post data with a link您如何使用链接发布数据
【发布时间】:2010-09-30 09:23:09
【问题描述】:

我有一个数据库,其中包含某条街道上每所房子的居民。我有一个'house view' php 网页,当使用'post'给出门牌号时,它可以显示单个房屋和居民。我还有一个“街景”网页,其中列出了房屋清单。我想知道的是,您是否可以在街景视图上提供链接,该链接将链接到房屋视图并同时发布门牌号,而无需为每个视图设置表格?

问候

【问题讨论】:

    标签: php html


    【解决方案1】:

    我会在查询字符串中使用一个值将所需信息传递到下一页。

    【讨论】:

      【解决方案2】:

      我假设每个房子都存储在自己的表中,并且有一个“id”字段,例如房子 id。因此,当您遍历房屋并显示它们时,您可以执行以下操作:

      <a href="house.php?id=<?php echo $house_id;?>">
        <?php echo $house_name;?>
      </a>
      

      然后在house.php 中,您将使用$_GET['id'] 获取房屋ID,使用is_numeric() 对其进行验证,然后显示其信息。

      【讨论】:

      • 问题具体说是POST
      • 在明确询问 POST 方法的情况下,如何接受 Giving Get Method 答案
      【解决方案3】:

      您不能通过&lt;a href="some_script.php"&gt;some_script&lt;/a&gt; 发出 POST HTTP 请求

      只需打开您的house.php,在其中找到您的$house = $_POST['houseVar'] 并将其更改为:

      isset($_POST['houseVar']) ? $house = $_POST['houseVar'] : $house = $_GET['houseVar']

      streeview.php 中创建这样的链接:

      &lt;a href="house.php?houseVar=$houseNum"&gt;&lt;/a&gt;

      或者别的什么。我只是不知道你的文件和里面的内容。

      【讨论】:

        【解决方案4】:

        如果你想使用 POST 而不是 GET 来传递数据,你可以使用 PHP 和 JavaScript 的组合,像这样:

        function formSubmit(house_number)
        {
          document.forms[0].house_number.value = house_number;
          document.forms[0].submit();
        }
        

        然后在 PHP 中遍历门牌号,并创建指向 JavaScript 函数的链接,如下所示:

        <form action="house.php" method="POST">
        <input type="hidden" name="house_number" value="-1">
        
        <?php
        foreach ($houses as $id => name)
        {
            echo "<a href=\"javascript:formSubmit($id);\">$name</a>\n";
        }
        ?>
        </form>
        

        这样,您只有一个表单,其隐藏变量会根据您单击的链接进行修改。然后 JavaScript 提交表单。

        【讨论】:

        • 很好的解决方案,但我认为在这种情况下使用 $_GET 会更好。
        • 哦 - 大写字母只是一个错字,真的 - 我没有足够快地松开 shift 键! :o) 我想也许我误解了 OP 的问题,但我认为他是专门寻找一种使用 POST 的方法。
        • 没错,也许他不知道也可以通过 $_GET 来完成 :)
        • 感谢 @Ben 我的 Google 搜索“发送带有链接的帖子数据”在此处停止!
        【解决方案5】:

        这是一个旧线程,但以防万一有人遇到,我认为最直接的解决方案是使用 CSS 使传统表单看起来像锚链接。

        @ben 是正确的,您可以使用 php 和 javascript 发送带有链接的帖子,但让我们问问 js 做了什么——本质上它创建了一个带有 style='display:none' 的表单,设置了一个输入/文本行value='something' 然后提交。

        但是,您可以通过制作表单来跳过所有这些。在输入/文本行(不是上面的表单本身)上设置 style='display:none' 然后使用 CSS 使按钮看起来像一个正常的链接。

        这是我使用的一个例子:

        在 PHP 类中,

        public function styleButton($style,$text){
            $html_str = "<form id='view_form' action='".$_SERVER['REQUEST_URI']."' method='post' >";
            $html_str .= "<input style='display:none;' name='list_style' type='text' value='".$style."' >";
            $html_str .= "<input id='view_button' type='submit' value='".$text."' >";
            $html_str .= "</form>";
            return $html_str;
        }
        

        然后在 CSS id="view_form" 中设置 "display:inline;" 并在 CSS id="view_button" 中设置为:“background:none;border:none;color:#fff;cursor:pointer”

        【讨论】:

        • 好点,也许不是最有效但绝对最容易使用的方法。
        【解决方案6】:

        我们应该让每个人都更轻松,因为您可以简单地将 JS 与 PHP 结合起来 将 PHP 和 JS 结合起来非常简单。

        $house_number = HOUSE_NUMBER;
        echo "<script type='text/javascript'>document.forms[0].house_number.value = $house_number; document.forms[0].submit();</script>";
        

        或者更安全的方式

        $house_number = HOUSE_NUMBER;
        echo "<script type='text/javascript'>document.forms[0].house_number.value = " . $house_number . "; document.forms[0].submit();</script>";
        

        【讨论】:

          【解决方案7】:

          这篇文章对我的项目很有帮助,因此我也想分享我的经验。 需要注意的重要一点是 POST 请求只能使用表单。 当我尝试使用 ejs 呈现页面时,我有类似的要求。我需要呈现一个导航,其中包含一个本质上是超链接的项目列表,当用户选择其中任何一个时,服务器会以适当的信息进行响应。

          所以我基本上使用循环将每个导航项创建为一个表单,如下所示:

          <ul>
              begin loop...
                  <li>
                      <form action="/" method="post">
                          <input type="hidden" name="country" value="India"/>
                          <button type="submit" name="button">India</button>
                      </form>               
                  </li>
              end loop.
          </ul>

          它所做的是创建一个带有隐藏输入的表单,其分配的值与按钮​​上的文本相同。 所以最终用户只会看到按钮中的文本,点击后会向服务器发送一个发布请求。

          请注意,输入框的 value 参数和 Button 文本完全相同,并且是使用 ejs 传递的值,我在上面的示例中没有显示以保持代码简单。

          这是导航的屏幕截图... enter image description here

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-08-22
            • 2019-04-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多