【问题标题】:can not get a form by its id无法通过 id 获取表单
【发布时间】:2016-02-11 19:00:15
【问题描述】:

我有一个在外部文件中创建的表单,然后我通过 php 将其包含在内,然后通过其 id 获取此表单以进行序列化。 index.php

<div id="addressesList">        
 <?php include 'addresstable.php' ?>
</div>

查看 index.php 文件的源代码:

index.php中的jquery代码:

<script>
   function editAddress(){
       $.ajax({
        url: 'insert.php',
        type: 'POST',
        data: $('#addressListForm').serialize() , // An object with the key 'submit' and value 'true; + '&' + 'editAddress' + '=' + id
        success: function (result) {
          //$(thisObj).parents("tr:first").remove();

          $("#addressesList").html(result);
        }
    }); 
   }
</script>

我想通过单击调用editAdress函数的元素来获取其id为“addressListForm”的表单。 地址表.php 文件

                <?php
                    $i=1;
                    $results=mysqli_query($dbCnn,"select * from addresses");
                    while( $row=mysqli_fetch_array($results,MYSQLI_ASSOC))

                    { 
                        echo '<form action="insert.php" method="post" id="addressListForm">';
                        echo "<tr>
                                <input type='hidden' value='$row[id]' name='id'/> 
                                <td>$i</td>
                                <td><input name='title' type='text' value='$row[title]' style='width:60px'  /></td>
                                <td><input name='address' type='text' value='$row[address]' style='width:100%' /></td>
                                <td><input name='tel' type='text' value='$row[phone]' required='required' style='width:100px' /></td> 
                                <td><input name='fax' type='text' value='$row[fax]' required='required' style='width:100px' /></td>
                                <td><i onclick=\"editAddress($row[id],this)\" class='fa fa-pencil-square-o' title='ثبت تغییرات رایانامه'></i></td> 
                                <td><i onclick=\"deleteAddress($row[id],this)\" class='fa fa-trash-o deletUser' title='حذف کاربر' ></i></td>
                            </tr>";

                    $i++;
                    echo"</form>";
                }
            ?>

</tbody>

【问题讨论】:

  • 当您点击当前页面时,您想从其他位置加载表单吗?
  • 你在哪里序列化你的表单数据?
  • 您不能在 tbody 中嵌入表单元素。这是无效的,不受支持
  • id 是在哪里定义的?您使用两个参数调用函数,但函数定义显示 NO 个参数。

标签: php jquery ajax


【解决方案1】:

addresstable.php 文件中,您应该将表格标签放在表单中,addressListForm id 现在无法访问(在源的语法突出显示中也很明显)。

  <table>
    <tr>
      <td>
        <form ...></form>
      </td>
    </tr>

    <tr>
      <td>
        <form ...></form>
      </td>
    </tr>
  </table>

如果您有多个表单,请将每个表单放入一个新的 &lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;/tr&gt;

改成:

                <?php
                    $i=1;
                    $results=mysqli_query($dbCnn,"select * from addresses");
                    while( $row=mysqli_fetch_array($results,MYSQLI_ASSOC))

                    { 
                        echo "<tr id="addressListForm">

                                       <td>
                                        <input type='hidden' value='$row[id]' name='id'/> 
                                       $i</td>
                                       <td><input name='title' type='text' value='$row[title]' style='width:60px'  /></td>
                                       <td><input name='address' type='text' value='$row[address]' style='width:100%' /></td>
                                       <td><input name='tel' type='text' value='$row[phone]' required='required' style='width:100px' /></td> 
                                       <td><input name='fax' type='text' value='$row[fax]' required='required' style='width:100px' /></td>
                                       <td><i onclick=\"editAddress($row[id],this)\" class='fa fa-pencil-square-o' title='ثبت تغییرات رایانامه'></i></td> 
                                       <td><i onclick=\"deleteAddress($row[id],this)\" class='fa fa-trash-o deletUser' title='حذف کاربر' ></i></td>

                             </tr>";

                    $i++;
                }
            ?>

</tbody>

【讨论】:

  • 我再次编辑了这个问题。注意addresstable.php
  • 谢谢,它可以工作,但我使用 slimtable 来分页和排序表格,你的代码给它带来了一些问题
  • @Hamid 再次编辑,由于您使用 serilize 和 ajax 获取和发送数据,您不需要 &lt;form&gt; 标签所以我删除了它,请参阅:stackoverflow.com/a/1829952/2543240
【解决方案2】:

我通过更改代码中的某些内容解决了我的问题:

index.php

    function editAddress(id,thisObj,x){
        var formId="#addressListForm" + x;
       $.ajax({
        url: 'insert.php',
        type: 'POST',
        data: $(formId).serialize()+ '&' + 'editAddress' + '=' + id , 
        success: function (result) {
         $("#addressesList").html(result);

        }
    }); 
   }

和addresstable.php文件

    <tbody id="addressTb">

        <?php
                $i=1;
                $results=mysqli_query($dbCnn,"select * from addresses");
                while( $row=mysqli_fetch_array($results,MYSQLI_ASSOC))

                { 
                    echo "
                              <tr>
                                   <td>$i<form action='insert.php' method='post' id='addressListForm$i'><input form='addressListForm$i' type='hidden' value='$row[id]' name='id'/> </td>
                                   <td><input form='addressListForm$i' name='title' type='text' value='$row[title]' style='width:60px'  /></td>
                                   <td><input form='addressListForm$i' name='address' type='text' value='$row[address]' style='width:100%' /></td>
                                   <td><input form='addressListForm$i' name='phone' type='text' value='$row[phone]' required='required' style='width:100px' /></td> 
                                   <td><input form='addressListForm$i' name='fax' type='text' value='$row[fax]' required='required' style='width:100px' /></td>
                                   <td><i onclick=\"editAddress($row[id],this,$i)\" class='fa fa-pencil-square-o' title='ثبت تغییرات رایانامه'></i></td>
                                   <td><i onclick=\"deleteAddress($row[id],this,$i)\" class='fa fa-trash-o deletUser' title='حذف کاربر' ></i></form></td> 
                                 </tr>
                         ";
                $i++;
            }
        ?>       
</tbody>

【讨论】:

  • 这是一个无效的标记,标签不应该有冲突&lt;td&gt; &lt;from&gt; &lt;/td&gt; &lt;/form&gt;
  • 运行良好,源代码视图中没有错误和警告
猜你喜欢
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多