javascript - php删除数据一直不成功,求大侠帮忙,跪求了
某草草
某草草 2017-05-16 13:01:04
0
8
728

点击删除按钮后,被选中的数据从页面中消失,貌似被删除了,但是在刷新后,会再次显示,同样刷新数据库表的数据后,数据没有被删除,烦大神看一下我的代码是哪里出问题了?

由原来的路由 action为url中的参数,这是 data.php中的 line 6 $action报错,现在已经修改了这个报错的信息,但是仍然无法从数据库中删除数据,请问是怎么回事呢?我应该怎么调试php中的代码?

修改后:
php:

//做个路由 action为url中的参数,这是 data.php中的 line 6  $action
    $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;
    }

//删除方法,我怎么在浏览器中调试php?怎么可以看到这个方法有没有执行?
    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 "删除失败!";
        }
    }

修改后:
前台页面JS:

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;
                        
                        //根据php的要求,需要传del_row回去,以激活删除的方法
                        /*var dataParam = {
                            action: "del_row",
                            rowId:rowId
                        };*/
                        
                        $.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('删除失败!');
                            }
                        });
                    });
                })
            }

修改后:
在Network中Headers查看,显示为:200

Request URL:http://localhost/muke/php/data.php?action=del_row&rowId=1
Request Method:DELETE
Status Code:200 OK
Remote Address:[::1]:80

Query String Parameters
action:del_row
rowId:1

在Network中Preview查看,由原来报错信息:action in data.php on line 6

现在是什么也没有,为空

在Network中Response查看,由原来报错信息:action in data.php on line 6

现在也是什么也没有,为空

使用 Rest Client 测试,结果为200,但是返回数据仍为 删除失败!真是要了老命了,搞不清楚到底出在哪里了,怎么老是删除不了,从返回信息来看,php中del_row()这个方法 可能就没有执行是吗?

我该怎么做呢?

在数据库中执行SQL语句:delete from t_users where user_id='1',提示是删除成功了的,但是在页面上却执行不成功,是不是没有接收到传回来的参数呢?

某草草
某草草

répondre à tous(8)
phpcn_u1582

Pour résumer, il y a 4 erreurs ci-dessus :

  1. Les paramètres renvoyés par delete ne peuvent être obtenus qu'en utilisant $_GET ;

  2. delete Les paramètres renvoyés doivent être placés dans l'URL, pas dans le corps ; les paramètres dans le corps sont utilisés pour la requête
  3.  ;

  4. Les instructions SQL doivent être compétentes, une mauvaise étape entraînera de mauvaises étapes ;
  5. Pour exécuter une instruction SQL dans la base de données pour vérifier si l'instruction est exécutée correctement, utilisez Rest Client pour tester si la requête URL est correcte
  6.  ;

  7. Ce qui suit est mon code correct Bien qu'il soit mal écrit, il peut être exécuté sans erreur.

php

<?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 "删除失败!";
        }
    }
?>
Page JS frontale :

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;
    }
洪涛


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'];
}
迷茫

Ça devrait être $userId = $_POST['rowId']; vrai

"DELETE FROM `t_user` where `user_id` = '.$userId'" 

Un peu plus

大家讲道理

Imprimez $_GET, il faudrait que les paramètres n'aient pas été passés

过去多啦不再A梦

Tu prends action放在body里了,自然$_GET就取不到action了,要用$_POST
看你都用了DELETE方式提交了,不如改成restful...

Ty80
$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.

習慣沉默

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 ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal