当我尝试通过 POST 将行的 id 值发送到另一个页面时,此页面将始终 GET id value 1

Posted

技术标签:

【中文标题】当我尝试通过 POST 将行的 id 值发送到另一个页面时,此页面将始终 GET id value 1【英文标题】:When I try to send id value of row via POST to another page, this page will always GET id value 1 【发布时间】:2017-04-08 02:00:11 【问题描述】:

我开始学习网络开发,并尝试将数据库生成的行之一的“id”发送到另一个页面。由于javascript代码,这些行是可点击的,所以我可以选择我想要的任何行。问题是,即使 POST 方法看起来是正确的:

<form id="send" method="POST" action=<?php echo "secondpage.php?id=". $row['id']; ?> ></form>   

// 在检查主页面时,它获取值。

然而 第二页总是收到 1 的 id 值。如果我点击 id=18 或任何其他的行都没关系。它总是会收到 1 的值...

我听说这可能是我放在 PHP 代码下的 javascript 代码的问题。

这是一段 PHP 代码:

<div id="content">
<table id="usersTable" class="table table-bordered table-hover table-sm ">
<form action=http://localhost/dodawanie.php>

    <input class="btn btn-primary" type="submit" value="Dodawanie">

</form>
<?php if ($result->num_rows > 0) 
     while($row = $result->fetch_assoc()) ?>

    <tr>         

        <td><?php echo "id: ". $row['id']; ?> </td> 
    <td><?php echo "Name: ". $row["first_name"]; ?> </td> 
        <td><?php echo "Last: ". $row["last_name"];?>  </td>
    <form id="send" method="POST" action=<?php echo "secondpage.php?id=". $row['id']; ?> >
</form> 
    </tr>

   <?php 
 else 
     echo "0 results";


$conn->close();
   ?>
</table>
</div>

这里是javascript:

<script type = "text/javascript">
$(document).ready(function()
    $('#usersTable').find('tr').click( function()
    //  alert('You clicked row ' + ($(this).index()+1) );
            $('#send').submit();
        );
    );
</script>

我很乐意接受任何帮助以在此处查找错误。

【问题讨论】:

我不建议在进行 POST 时在查询字符串中发送参数,尽量遵守 REST 原则。但无论如何,渲染的action 属性是什么? 那么 secondpage.php 文件里面有什么? 任何时候通过 URL 发送参数,它们都将通过 GET 发送。你也不应该在&lt;table&gt; 中嵌套&lt;form&gt;:***.com/questions/5967564/form-inside-a-table 至于 secondpage.php 目前没有太多代码,但是我尝试检查$id= $_GET['id'];发送的内容 你可以用ajax代替
【参考方案1】:

&lt;form id="send" id 值更改为唯一

或使用类似下面的类:&lt;form class="form_send" 然后在您的 javascript 中搜索单击的 tr 内的 form_class:

$(document).ready(function()
    $('#usersTable').find('tr').click( function()
          $(this).find('form.form_send').submit();
        );
    );

【讨论】:

【参考方案2】:

ID 必须是唯一的。 $('#send').submit() 只查找并提交具有该 ID 的第一个表单。

例如,您可以将行 id 添加到表单的 id 属性中以使其唯一。

【讨论】:

以上是关于当我尝试通过 POST 将行的 id 值发送到另一个页面时,此页面将始终 GET id value 1的主要内容,如果未能解决你的问题,请参考以下文章

可以将行中的数据从一张纸复制到另一张纸吗?

将行的子集从一个表复制到另一个表,过滤两列

根据 Id [重复] 将行从一个表更新到另一个表

将行的值分配给全局变量

使用 INSERT 查询将行从一个表复制到另一个表 [关闭]

将行值转换为列,其值来自 spark scala 中的另一列 [重复]