Datatables Jquery无法从表提交POST


Datatables Jquery can not submit the POST from table

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

这是我的源页面

    <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>

这些代码是我从admin.php通过index.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中以处理脚本。

谢谢。。

表单不允许是表、tbody或tr.的子元素

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

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

一切都很好。把你的<form>&</form>表外。

<table></table>应在<form></form>

例如:(正确方式)

<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&表单不接受我的表单中的所有输入行

既然OP问了怎么做。

我的观点是,使用<table></table>仅用于显示数据。因为不能在<table></table>中使用<form></form>。进行一列操作,将值传递给具有该行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>

编辑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.
?>

从@nana获得帮助,你可以这样做

表单是的无效子项,但在下有效

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

通过这种方式,您可以在内部拥有有效的表单元素。您可以包含所需的隐藏元素,从而可以从jQueryDataTable内部提交表单。

您可以尝试以下代码:

<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>