Après avoir cliqué sur le bouton Supprimer, les données sélectionnées disparaissent de la page. Elles semblent avoir été supprimées, mais elles seront à nouveau affichées après l'actualisation des données dans la table de la base de données, les données n'ont pas été supprimées. jetez un oeil à mes données. Quel est le problème avec le code?
L'action de routage d'origine est le paramètre dans l'URL. Il s'agit de l'erreur $action de la ligne 6 dans data.php. Le message d'erreur a maintenant été modifié, mais les données ne peuvent toujours pas être supprimées de la base de données. Étoffe de laine? Comment dois-je déboguer le code en php ?
Après modification :
php :
//Créer une route. Action est le paramètre dans l'URL. Il s'agit de la ligne 6 $action dans data.php.
$action = $_GET['action'];
commutateur ($ action) {
cas 'init_data_list' :
init_data_list();
casser;
cas 'add_row' :
add_row();
casser;
cas 'del_row' :
del_row();
casser;
cas 'edit_row' :
edit_row();
casser;
}
//Méthode Supprimer, comment déboguer php dans le navigateur ? Comment puis-je voir si cette méthode a été exécutée ?
fonction del_row(){
//test
/*echo "ok!";*/
//Recevoir les paramètres renvoyés
$rowId = $_GET['rowId'];
$sql = "supprimer de t_users où user_id='$rowId'" ;
si(query_sql($sql)){
écho "d'accord!";
}autre{
echo "La suppression a échoué !";
}
Après modification :
Première page JS :
var $table = $('#table'),
$supprimer = $('#supprimer');
$(fonction() {
searchData();
delData();
});
fonction delData() {
$remove.on('clic', fonction() {
if(confirm("Voulez-vous continuer la suppression")) {
var lignes = $.map($table.bootstrapTable('getSelections'), function(row) {
//Renvoie le numéro d'index de la ligne sélectionnée
renvoyer row.user_id ;
});
}
$.map($table.bootstrapTable('getSelections'),function(row){
var del_url = "./php/data.php";
// Supprime les données en fonction de l'ID utilisateur, car cet identifiant est le paramètre transmis au serveur
var rowId = row.user_id;
//Selon les exigences de PHP, del_row doit être renvoyé pour activer la méthode de suppression.
/*var dataParam = {
action : "del_row",
ID de ligne : ID de ligne
};*/
$.ajax({
tapez : "supprimer",
url:del_url + "?action=del_row&rowId=" + rowId,
Type de données : "html",
contentType : 'application/json;charset=utf-8',
succès : fonction (données) {
$table.bootstrapTable('supprimer',{
champ : 'user_id',
valeurs : lignes
});
$remove.prop('disabled', true);
},
erreur:fonction(données){
alert('La suppression a échoué !');
}
});
});
})
Après modification :
Affiché dans les en-têtes du réseau, il s'affiche sous la forme : 200
URL de demande : http://localhost/muke/php/data.php?action=del_row&rowId=1
Méthode de requête : DELETE
Code d'état : 200 OK
Adresse distante :[::1]:80
Paramètres de chaîne de requête
action:del_row
ID de ligne : 1
Aperçu dans Réseau, le message d'erreur d'origine est : action dans data.php à la ligne 6
Il n'y a rien maintenant, c'est vide
Afficher la réponse dans le réseau, le message d'erreur d'origine est : action dans data.php à la ligne 6
Il n'y a rien maintenant, c'est vide
En utilisant Rest Client pour tester, le résultat est 200, mais la suppression des données renvoyées a toujours échoué ! Cela me tue vraiment. Je n'arrive pas à comprendre ce qui ne va pas et pourquoi il ne peut pas être supprimé. À en juger par les informations renvoyées, la méthode del_row() en PHP peut ne pas être exécutée, n'est-ce pas ?
< br>
Que dois-je faire ?
Exécutez l'instruction SQL dans la base de données : delete from t_users où user_id='1'. L'invite indique que la suppression a réussi, mais l'exécution a échoué sur la page. Est-ce parce que les paramètres renvoyés ne sont pas reçus ?
< /p>
Pour résumer, il y a 4 erreurs ci-dessus :
Les paramètres renvoyés par delete ne peuvent être obtenus qu'en utilisant $_GET ;
;
;
php
Page JS frontale :
Méthode publique, connectez-vous à la base de données :
Vous avez soumis la demande en utilisant la méthode delete, le backend ne peut donc pas recevoir de paramètres à l'aide de $_GET et $_POST.
Le paramètre delete doit être placé dans l'url :
Ça devrait être
$userId = $_POST['rowId'];
vraiUn peu plus
Imprimez $_GET, il faudrait que les paramètres n'aient pas été passés
Tu prends
action
放在body里了,自然$_GET
就取不到action
了,要用$_POST
。看你都用了
DELETE
方式提交了,不如改成restful
...Y a-t-il un problème avec l'instruction sql ? Imprimez-le lorsque le programme est en cours d'exécution, copiez-le dans la base de données et exécutez le test une fois.
Imprimez d'abord $_GET pour voir ce qu'il y a ?
Cet endroit est très étrange, essayez de changer le dataType en json
La raison de l'erreur est que le paramètre d'action est introuvable
Et query_sql ? Quoi utiliser ?