我正在嘗試收集選定的復(fù)選框,對(duì)其進(jìn)行更新或刪除操作,并通過(guò)ajax將此表單傳遞給php。我對(duì)這件事很陌生,花了幾天時(shí)間試圖找出方法。
網(wǎng)絡(luò)研究沒(méi)有給我任何結(jié)果,我嘗試通過(guò)幾種不同的方式發(fā)送ajax - 沒(méi)有結(jié)果。雖然僅使用 PHP,我得到了帶有 select 和 ids 數(shù)組的表單。
如何使其與 AJAX 配合使用?
我的表單。它放在桌子里面。表的主體位于 php 文件中。該文件中的模態(tài)窗口內(nèi)還有其他形式,僅提及是否可能發(fā)生沖突。
<div class="inner"> <div class="option"> <div class="e-table"> <div class="table-responsive table-lg mt-3"> <form method="post" id="menu_form"> <table class="table table-bordered"> <select name="select" id="menu" > <option value="select">Please select</option> <option value="set-active">Set active</option> <option value="set-not-active">Set not active</option> <option value="delete">Delete</option> </select> <thead> <tr> <th class="text-nowrap align-middle"><input type="checkbox" id="select-all"></th> <th>Name</th> <th>Role</th> <th>Status</th> <th>Action</th> </tr> </thead> <tbody id="users_data"> <input type="submit" value="submit" name="submit_btn" /> </tbody> </table> </form> </div> </div> </div> </div>
這是我正在嘗試使用 AJAX 進(jìn)行的操作。
<script type="text/javascript"> $(document).ready(function() { $('#menu_form').on('submit', function (e) { e.preventDefault(); $.ajax({ type: 'post', url: "process.php", data: $('#menu_form').serialize(), success: function (response) { console.log(response) } }); }); });
我的 PHP。表的主體和處理表單提交。僅顯示對(duì)其中一個(gè)選項(xiàng)的處理,以免使該問(wèn)題變得更長(zhǎng),其他選項(xiàng)幾乎相同。
<td class="text-nowrap align-middle"><input type="checkbox" name="update_id" value="<?= $row['id'] ?>"></td> <td class="text-nowrap align-middle"><?= $row['name']; ?></td> <td class="text-nowrap align-middle"><?= $row['role']; ?></td> <td class="text-center align-middle"> <?php if ($row['status'] == 1): ?> <i class="fa fa-circle active-circle"></i> <?php else: ?> <i class="fa fa-circle not-active-circle" style="color:grey"></i> <?php endif; ?> </td> <td class="text-center align-middle"><button class="btn btn-sm btn-outline-secondary badge" type="button" onclick="edit_record(<?= $row['id']; ?>)" >Edit</button> <button class="btn btn-sm btn-outline-secondary badge" type="button" onclick="delete_record(<?= $row['id']; ?>)" ><i class="fa fa-trash"></i></button> </td> </tr> if(isset($_POST['submit_btn'])) { $idArray = $_POST['update_id']; $idString = implode(',', $idArray); if (isset($_POST['select']) && $_POST['select'] == 'set-active') { $statement = $pdo->prepare("UPDATE user SET status = 1 WHERE id IN ($idString)"); $result = $statement->execute(); if ($result) { $response = array('status' => true, 'message' => 'Record edited successfully.'); }else{ $response = array('status' => true, 'message' => 'Error'); } echo json_encode($response); }
在我看來(lái),問(wèn)題出在這里:
if(isset($_POST['submit_btn'])) {
表單中的不是正文/有效負(fù)載的一部分 與 POST 請(qǐng)求一起發(fā)送(畢竟,它是一個(gè)按鈕,并且不包含任何對(duì)服務(wù)器有用的信息)。
因此,上面的 if()
檢查將始終為 false,并且 if()
塊內(nèi)的所有代碼塊都將失敗。不會(huì)被執(zhí)行。