无法通过其ID获取表单

时间:2016-02-11 19:00:16

标签: php jquery ajax

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

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

查看index.php文件的来源: enter image description here

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”的表单。 addresstable.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>

2 个答案:

答案 0 :(得分:0)

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

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

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

如果您有多个表单,请将每个表单放入新的<tr><td></td></tr>

将其更改为:

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

答案 1 :(得分:-1)

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

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