2014-01-18 14 views
0

我有一系列動態創建的表單,允許用戶更新網頁上的各個部分。提交時,表單應該更新數據庫並回顯成功警報。無論有多少列表元素,列表的第一種形式似乎都不起作用(不知道爲什麼)有什麼想法?AJAX形式的第一個孩子沒有提交時,每隔一個表格

注意當在第一個LI(永不工作的)中提交表單時,它返回一個成功語句(表示AJAX工作)但不更新數據庫。我身邊有確保的ID排隊到SQL數據庫被查詢的發揮,並罰款相匹配,但在第一個孩子的形式拒絕更新

<?php 
    $conn = mysqli_connect('localhost', 'root', '', 'ajax') or die ('error could not connect'); 
    $query = "SELECT * FROM data"; 
    $result = mysqli_query($conn, $query) or die('error could not query'); 

    echo '<ul>'; 
    while ($row = mysqli_fetch_array($result)) { 
     echo '<li>'; 
      echo '<form class="form">'; 
       echo '<input type="hidden" name="id" value="'.$row['id'].'">'; 
       echo '<input type="text" name="data" value="'.$row['data'].'">'; 
       echo '<input type="submit" name="submit" value="Submit">'; 
      echo '</form>';   
     echo '</li>'; 
    } 
    echo '</ul>'; 

    mysqli_close($conn); 
?> 
<script> 
$('form').on('submit', function(e){ 
    $.ajax({ // Starter Ajax Call 
     type: "POST",   
     url: 'update.php', 
     data: $('form').serialize(), 
     success: function() { 
     alert('updated');  
     } 
    }); 
    e.preventDefault(); 
}); 
</script> 

Update.php

<?php 
    $id = $_POST['id']; 
    $data = $_POST['data']; 

    $conn = mysqli_connect('localhost', 'root', '', 'ajax') or die ('error could not connect'); 
    $query = "UPDATE data SET data = '$data' WHERE id = $id"; 
    mysqli_query($conn, $query) or die('error could not query'); 
    mysqli_close($conn); 
?> 

HTML輸出

<ul> 
<li> 
    <form> 
    <input type="hidden" name="id" value="3"> 
    <input type="text" name="data" value="change"> 
    <input type="submit" name="submit" value="Submit"> 
    </form></li> //Does not update SQL specific row 
<li><form></form></li> //updates fine 
<li><form></form></li> //updates fine 
<li><form></form></li> //updates fine 
</ul> 
+0

您是否希望在提交任何表單時提交所有表單中的數據? – Musa

+0

理想情況下,只是更新的形式,但所有的形式都是動作形式創建的,它們的數量會隨時發生變化 – user934902

回答

1

在你的代碼中你有$('form').serialize()這將試圖序列化所有形式的數據。你應該做的是序列化正在提交的表格$(this).serialize()

<script> 
$('form').on('submit', function(e){ 
    $.ajax({ // Starter Ajax Call 
     type: "POST",   
     url: 'update.php', 
     data: $(this).serialize(), 
     success: function() { 
     alert('updated');  
     } 
    }); 
    e.preventDefault(); 
}); 
</script> 
+0

修復了這一切,謝謝 – user934902

相關問題