JavaScript - PHP がデータの削除に失敗しました。助けてください。
某草草
某草草 2017-05-16 13:01:04
0
8
740

削除ボタンをクリックすると、選択したデータがページから消えますが、データベーステーブルのデータを更新すると再び表示されます。私のデータを見てください。コードのどこが間違っていますか?

元のルーティング アクションは URL のパラメータです。これは data.php の 6 行目の $action エラーです。エラー メッセージは変更されましたが、依然としてデータベースからデータを削除できません。毛織物? PHPでコードをデバッグするにはどうすればよいですか?

変更後:
php:

//ルートを作成します。アクションは URL のパラメーターです。これは data.php の 6 行目の $action です。
    $アクション = $_GET['アクション'];

    スイッチ($アクション) {
        ケース「init_data_list」:
            init_data_list();
            壊す;
        ケース 'add_row':
            add_row();
            壊す;
        ケース「del_row」:
            del_row();
            壊す;
        ケース「編集行」:
            edit_row();
            壊す;
    }

// メソッドを削除します。ブラウザで PHP をデバッグするにはどうすればよいですか?このメソッドが実行されたかどうかを確認するにはどうすればよいですか?
    関数 del_row(){
        //テスト
        /*「ok!」をエコーし​​ます;*/
        
        // 返されたパラメータを受け取る
        $rowId = $_GET['rowId'];
        $sql = "user_id='$rowId' の t_users から削除";
        
        if(クエリ_sql($sql)){
            「わかりました!」をエコーし​​ます。
        }それ以外{
            echo "削除に失敗しました!";
        }
    }

変更後:
フロントページ JS:

var $table = $('#table'),
    $remove = $('#remove');

$(関数() {
    検索データ();
    delData();
});

関数 delData() {
                $remove.on('クリック', function() {
                    if(confirm("削除を続けますか")) {
                        var rows = $.map($table.bootstrapTable('getSelections'), function(row) {
                            //選択した行のインデックス番号を返す
                            row.user_id を返します。
                        });
                    }
                    
                    $.map($table.bootstrapTable('getSelections'),function(row){
                        var del_url = "./php/data.php";
                        //この ID はサーバーに渡されるパラメータであるため、userId に基づいてデータを削除します
                        var rowId = row.user_id;
                        
                        //PHP の要件に従って、削除メソッドをアクティブにするために del_row を返す必要があります。
                        /*var dataParam = {
                            アクション: "del_row"、
                            行ID:行ID
                        };*/
                        
                        $.ajax({
                            タイプ:「削除」、
                            url:del_url + "?action=del_row&rowId=" + rowId、
                            データタイプ: "html",
                            contentType: 'application/json;charset=utf-8',
                            成功: 関数(データ) {
                                $table.bootstrapTable('削除',{
                                    フィールド: 'user_id',
                                    値:行
                                });
                                $remove.prop('無効', true);
                            }、
                            エラー:関数(データ){
                                alert('削除に失敗しました!');
                            }
                        });
                    });
                })
            }

変更後:
ネットワークのヘッダーに表示されると、次のように表示されます: 200

リクエスト URL:http://localhost/muke/php/data.php?action=del_row&rowId=1
リクエストメソッド:DELETE
ステータスコード:200 OK
リモートアドレス:[::1]:80

クエリ文字列パラメータ
アクション:del_row
rowId:1

ネットワークでのプレビュー、元のエラー メッセージは次のとおりです: data.php の 6 行目

今は何もなく、空です

ネットワークでの応答の表示、元のエラー メッセージは次のとおりです: data.php の 6 行目

今は何もなく、空です

Rest Client を使用してテストすると、結果は 200 ですが、返されたデータは依然として削除に失敗しました。何が問題で、なぜ削除できないのかがわかりません。戻り情報から判断すると、PHP の del_row() メソッドが実行されない可能性があります。
< br>

どうすればいいですか?

データベースで SQL ステートメントを実行します: delete from t_users where user_id='1'。削除が成功したというプロンプトが表示されますが、返されたパラメーターが受信されなかったことが原因でしょうか。
< /p>

某草草
某草草

全員に返信(8)
phpcn_u1582

要約すると、上記の 4 つのエラーがあります:

  1. delete によって返されるパラメータは、$_GET を使用してのみ取得できます。

  2. delete 返されるパラメータは本文ではなく URL に配置する必要があります。本文内のパラメータはクエリに使用されます。
  3. SQL ステートメントは熟練している必要があり、一歩間違うと間違ったステップにつながります。

  4. データベースで SQL ステートメントを実行して、ステートメントが正しく実行されたかどうかを確認するには、Rest クライアントを使用して URL リクエストが正しいかどうかをテストします。
  5. 以下は私の正しいコードです。書き方は悪いですが、エラーなく実行できます。

  6. php
  7. リーリー

    フロントエンド JS ページ:
  8. リーリー
パブリックメソッド、データベースにログインします:

リーリー

いいねを押す +0
洪涛


削除メソッドを使用してリクエストを送信したため、バックエンドは $_GET と $_POST を使用してパラメーターを受け取ることができません。

削除パラメータは URL に配置する必要があります:

リーリー
いいねを押す +0
迷茫

それは$userId = $_POST['rowId'];正しいはずです

リーリー

もう少し

いいねを押す +0
大家讲道理

$_GET を出力します。パラメータが渡されていないはずです

いいねを押す +0
过去多啦不再A梦

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

を受け取ります
いいねを押す +0
Ty80

リーリー

SQL ステートメントに問題がありますか?プログラムの実行中にそれを印刷し、データベースにコピーしてテストを 1 回実行します。

いいねを押す +0
習慣沉默

まず $_GET を印刷して、そこに何があるか確認してください。

あなたのここは非常に奇妙です。dataType を json に変更してみてください

エラーの理由は、アクションパラメータが見つからないためです

いいねを押す +0
左手右手慢动作

query_sql についてはどうですか?何を使うか?

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート