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); }
在我看來,問題出在這里:
if(isset($_POST['submit_btn'])) {
表單中的不是正文/有效負(fù)載的一部分 與 POST 請求一起發(fā)送(畢竟,它是一個(gè)按鈕,并且不包含任何對服務(wù)器有用的信息)。
因此,上面的 if()
檢查將始終為 false,并且 if()
塊內(nèi)的所有代碼塊都將失敗。不會(huì)被執(zhí)行。