【问题标题】:Datatables Jquery can not submit the POST from tableDatatables Jquery无法从表提交POST
【发布时间】:2015-12-02 08:18:00
【问题描述】:

我使用 datatables jquery 作为表格插件来显示来自 mysql 的数据列表。 一切都很好,脚本运行良好。但是当我尝试从每一行提交数据表单时,页面不会加载任何内容。

这是我的源页面。

    <div id="product-grid" class="col-lg-6">
        <div class="txt-heading"><h3> Services </h3></div>
         <table class="table table-striped table-bordered table-hover " id="dataTables-example">
         <thead>
                <tr>
                    <th><strong>Name</strong></th>
                    <th><strong>Price</strong></th>
                    <th name="kategori"><strong>Kategori</strong></th>
                    <th><strong>Quantity</strong></th>
                    <th><strong>Action</strong></th>
                </tr>   
        </thead>
        <?php
        $product_array = runQuery("SELECT * FROM menu ORDER BY id ASC");
        if (!empty($product_array)) { 
            foreach($product_array as $key=>$value){
        ?>
        <form class="form-group" method="post" action="?action=add&code=<?php echo $product_array[$key]["code"]; ?>">
<tbody>
            <tr>
                <td><strong><?php echo $product_array[$key]["name"]; ?></strong></td>
                <td class="product-price"><?php echo $format->angka($product_array[$key]["price"]); ?></td>
                <td>    <?php echo $product_array[$key]["kategori"]; ?> </td>
                <td>    <input type="text" name="quantity" value="1" size="2" /> </td>
                <td> 
                    <input type="submit" value="Submit" class="btn btn-primary" />
                </td>
            </tr>
        </form>
        <?php }
        }?>
</tbody>
        </table>
    </div>

我通过 index.php 页面从 admin.php 加载这些代码..

<link href="<?php echo ASSETS.'bootstrap/dataTables/dataTables.bootstrap.css';?>" rel="stylesheet">  
<script src="<?php echo ASSETS.'bootstrap/js/bootstrap.min.js';?>"></script> 
<script src="<?php echo ASSETS.'bootstrap/dataTables/jquery.dataTables.js';?>"></script> 
<script src="<?php echo ASSETS.'bootstrap/dataTables/dataTables.bootstrap.js';?>"></script>

我想要的是,当用户单击提交时,表单被发布到 action.php 以处理脚本。

谢谢你..

【问题讨论】:

  • 有相关代码可以发吗?
  • @RFLdev 我帖子上面的代码是我现在的代码。我只是陷入了我遇到的那个问题。

标签: php jquery datatables


【解决方案1】:

表格不允许作为表格、tbody 或 tr 的子元素。

您可以在表单中包含整个表格。您可以在表格单元格中有一个表格。表格中不能包含表格的一部分。

在整个表格周围使用一种表格。然后使用单击的提交按钮来确定要处理的行(快速)或处理每一行(允许批量更新)。

一切都好。把你的&lt;form&gt; & &lt;/form> 放在桌子外面。

&lt;table&gt;&lt;/table&gt; 应该在 &lt;form&gt;&lt;/form&gt; 里面

例如:(正确方式)

<form method="POST">
    <table id="mytable">
        <tr>
          <td>
            <input name="s1" type="text" />
          </td>
          <td>
            <input name="s2" type="text" />
          </td>
        </tr>
        <tr>
          <td colspan="2">
            <input type="submit" name="submit" value="insert" />
          </td>
        </tr>
    </table>
</form>

而且,这是错误的方法。

<table id="mytable">
    <form method="POST">
        <tr>
            <td>
                 <input name="s1" type="text" />
            </td>
            <td>
                 <input name="s2" type="text" />
            </td>
        </tr>
        <tr>
            <td colspan="2">
                 <input type="submit" name="submit" value="insert" />
            </td>
        </tr>
    </form>
</table>

更多信息,请查看Can't put PHP form in a table & Form doesn't accept all inputs rows in my form

自从 OP 询问如何做。

我的意见是,使用&lt;table&gt;&lt;/table&gt; 仅用于显示数据。因为你不能在&lt;table&gt;&lt;/table&gt; 中使用&lt;form&gt;&lt;/form&gt;。 Make One Column Action,您可以在其中将值传递给具有该行 ID 的其他页面。并且,在该页面(我写的其他页面)中,显示该产品的数据(如果需要),包括要提交的Quantity。这只是一个建议。希望你能理解。

<div id="product-grid" class="col-lg-6">
    <div class="txt-heading"><h3> Services </h3></div>
        <table class="table table-striped table-bordered table-hover " id="dataTables-example">
            <thead>
                <tr>
                <th><strong>Name</strong></th>
                <th><strong>Price</strong></th>
                <th name="kategori"><strong>Kategori</strong></th>
                <th><strong>Action</strong></th>
                </tr>   
            </thead>
            <tbody>
            <?php
            $product_array = runQuery("SELECT * FROM menu ORDER BY id ASC");
            if (!empty($product_array)) { 
                foreach($product_array as $key=>$value) {
                ?>
                    <tr>
                        <td><strong><?php echo $product_array[$key]["name"]; ?></strong></td>
                        <td class="product-price"><?php echo $format->angka($product_array[$key]["price"]); ?></td>
                        <td><?php echo $product_array[$key]["kategori"]; ?> </td>
                        <td>
                            <a href="Edit-Somepage.php?id=<?php echo $product_array[$key]["id"]; ?>">Edit</a>
                        </td>
                    </tr>
                <?php }
            }?>
            </tbody>
        </table>
    </div>
</div>

Edit-Somepage.php

<?
$id=$_GET['id'];
$product_array = runQuery("SELECT * FROM menu WHERE id='$id'");
foreach($product_array as $key=>$value) {
    $product_name=$product_array[$key]["name"];
    $product_price=$format->angka($product_array[$key]["price"]);
}
?>
<form class="form-group" method="post" action="submit-SomePage.php">
    <?echo $product_name;?><br>
    <?echo $product_price;?><br>
    <input type='hidden' value="<?echo $id;?>" name='ProductId'>
    <input type="text" name="quantity" value="1" size="2" /> <br>
    <input type="submit" value="Submit" class="btn btn-primary" />
</form>

提交-SomePage.php

<?
$product_id=$_POST['ProductId'];

using this $product_id save/update/submit product.
//Update Query.
?>

【讨论】:

  • 谢谢你的回答,但另一个问题是。我需要使用 dataTables jquery 插件作为我的表格脚本。这些脚本帮助我缩短表的数据。例如,要使用数据表,我必须使用 ......表的内容......
    。如果我像上面的答案那样分开表格,每行的结果将显示在不同的表格中......
  • 嗨@pitokeraf:是的,使用它。但是,只是为了显示数据。制作一列“操作”。在其中您将该行的 Id 传递给其他页面以提交数据。因为,不可能在&lt;table&gt;&lt;/table&gt; 的任何子元素中使用&lt;form&gt;&lt;/form&gt;。希望你能理解。
  • 对不起,你的意思是我必须制作另一个页面来处理数据?我有它。我已将页面包含在表单操作中。或者你能用一个示例代码向我解释一下吗?请帮帮我....
  • 是的,当然@pitokeraf。等待 10 分钟。我会准备好我的代码。
  • 是的,当然@Nana Partykar
【解决方案2】:

从@nana 答案中获取帮助,您可以这样做

Form 是 的无效子级,但在

下有效
<tr>
<td> some field
<td> some other field
<td> **<form method="post">**somefield, some hidden field**</form>**
</td>

这样你就有了有效的表单元素。您可以包含您需要的隐藏元素,因此可以从 jQuery DataTable 中提交表单。

【讨论】:

    【解决方案3】:

    你可以试试下面的代码:

    <form action="" method="POST">
      <table border="1">
        <tr>
          <td>
            <input type="text" name="usrname" />
          </td>
        </tr>
        <tr>
          <td>
            <input type="text" name="email" />
          </td>
        </tr>
        <tr>
          <td>
            <input type="password" name="password" />
          </td>
        </tr>
        <tr>
          <td colspan="3">
            <input type="submit" name="submit_btn" value="login">
          </td>
        </tr>
      </table>
    </form>

    【讨论】:

    • 感谢您的回答。是的,如果只有一两行,那就对了。数据库的结果如何。我们必须使用 foreach 或 while...我的意思是,每一行都有一个提交帖子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2022-01-24
    • 2015-03-11
    相关资源
    最近更新 更多