Maison > Questions et réponses > le corps du texte
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>
phpcn_u15822017-05-16 13:03:04
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 :<?php
//测试php是否可以拿到数据库中的数据
/*echo "44444";*/
//做个路由 action为url中的参数
$action = $_GET['action'];
switch($action) {
case 'init_data_list':
init_data_list();
break;
case 'add_row':
add_row();
break;
case 'del_row':
del_row();
break;
case 'edit_row':
edit_row();
break;
}
//删除方法
function del_row(){
//测试
/*echo "ok!";*/
//接收传回的参数
$rowId = $_GET['rowId'];
$sql = "delete from t_users where user_id='$rowId'";
if(query_sql($sql)){
echo "ok!";
}else{
echo "删除失败!";
}
}
?>
var $table = $('#table'),
$remove = $('#remove');
$(function() {
searchData();
delData();
});
function delData() {
$remove.on('click', function() {
if(confirm("是否继续删除")) {
var rows = $.map($table.bootstrapTable('getSelections'), function(row) {
//返回选中的行的索引号
return row.user_id;
});
}
$.map($table.bootstrapTable('getSelections'),function(row){
var del_url = "./php/data.php";
//根据userId删除数据,因为这个id就是 传给服务器的参数
var rowId = row.user_id;
$.ajax({
type:"delete",
url:del_url + "?action=del_row&rowId=" + rowId,
dataType:"html",
contentType: 'application/json;charset=utf-8',
success: function(data) {
$table.bootstrapTable('remove',{
field: 'user_id',
values: rows
});
$remove.prop('disabled', true);
},
error:function(data){
alert('删除失败!');
}
});
});
})
}
Méthode publique, connectez-vous à la base de données :
function query_sql(){
$mysqli = new mysqli("127.0.0.1", "root", "root", "crud");
$sqls = func_get_args();
foreach($sqls as $s){
$query = $mysqli->query($s);
}
$mysqli->close();
return $query;
}
PHP中文网2017-05-16 13:03:04
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 :
if($_SERVER['REQUEST_METHOD'] == 'DELETE') {
//参数包含在请求url中
$uri = $_SERVER['REQUEST_URI'];
}
迷茫2017-05-16 13:03:04
Ça devrait être $userId = $_POST['rowId'];
vrai
"DELETE FROM `t_user` where `user_id` = '.$userId'"
Un peu plus
大家讲道理2017-05-16 13:03:04
Imprimez $_GET, il faudrait que les paramètres n'aient pas été passés
过去多啦不再A梦2017-05-16 13:03:04
Tu prends action
放在body里了,自然$_GET
就取不到action
了,要用$_POST
。
看你都用了DELETE
方式提交了,不如改成restful
...
PHP中文网2017-05-16 13:03:04
$sql = "DELETE FROM `t_user` where `user_id` = '".$userId."';";
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.
習慣沉默2017-05-16 13:03:04
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