J'essaie de collecter les cases à cocher sélectionnées, de les mettre à jour ou de les supprimer et de transmettre ce formulaire à php via ajax. Je suis très nouveau dans ce domaine et j'ai passé quelques jours à essayer de trouver un moyen.
La recherche sur le Web ne m'a donné aucun résultat, j'ai essayé d'envoyer ajax de différentes manières - aucun résultat. En utilisant uniquement PHP, j'obtiens le formulaire avec les tableaux select et ids.
Comment le faire fonctionner avec AJAX ?
Mes formulaires. Il est placé à l'intérieur de la table. Le corps du tableau se trouve dans le fichier php. Il existe d'autres formulaires dans la fenêtre modale de ce document, mentionnant simplement s'il pourrait y avoir un conflit.
<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>
C'est ce que j'essaie de faire en utilisant AJAX.
<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) } }); }); });
Mon PHP. Le corps du tableau et gère la soumission du formulaire. Seul le traitement d'une des options est présenté afin de ne pas allonger la question, les autres options sont à peu près les mêmes.
<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); }
À mon avis, le problème est là :
Le
du formulaire ne fait pas partie du body/payload envoyé avec la requête POST (après tout, c'est un bouton et ne contient aucune information utile au serveur).
Donc, la vérification
et tous les blocs de code à l'intérieur du blocif()
ci-dessus sera toujoursif()
检查将始终为 false,并且if()
fauxif()
échoueront. ne sera pas exécuté. 🎜