Ich versuche, ausgewählte Kontrollkästchen zu sammeln, sie zu aktualisieren oder zu löschen und dieses Formular über Ajax an PHP zu übergeben. Ich bin sehr neu in diesem Bereich und habe ein paar Tage damit verbracht, einen Weg zu finden.
Webrecherche hat mir keine Ergebnisse gebracht, ich habe versucht, Ajax auf verschiedene Arten zu senden – keine Ergebnisse. Wenn ich nur PHP verwende, erhalte ich das Formular mit select- und ids-Arrays.
Wie funktioniert es mit AJAX?
Meine Formulare. Es wird in den Tisch gelegt. Der Hauptteil der Tabelle befindet sich in der PHP-Datei. Es gibt weitere Formulare im modalen Fenster in diesem Dokument, in denen nur erwähnt wird, ob möglicherweise ein Konflikt vorliegt.
<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>
Das versuche ich mit AJAX zu erreichen.
<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) } }); }); });
Mein PHP. Der Hauptteil der Tabelle und die Verarbeitung des Formulars. Es wird nur die Behandlung einer der Optionen gezeigt, um die Frage nicht zu verlängern. Die anderen Optionen sind weitgehend gleich.
<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); }
在我看来,问题出在这里:
表单中的
不是正文/有效负载的一部分 与 POST 请求一起发送(毕竟,它是一个按钮,并且不包含任何对服务器有用的信息)。
因此,上面的
if()
检查将始终为 false,并且if()
块内的所有代码块都将失败。不会被执行。