検索

ホームページ  >  に質問  >  本文

JavaScript - PHP がデータの削除に失敗しました。助けてください。

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

元のルーティング アクションは 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>

某草草某草草2748日前736

全員に返信(8)返信します

  • phpcn_u1582

    phpcn_u15822017-05-16 13:03:04

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

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

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

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

    6. php
    7. リーリー

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

    リーリー

    返事
    0
  • PHP中文网

    PHP中文网2017-05-16 13:03:04


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

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

    リーリー

    返事
    0
  • 迷茫

    迷茫2017-05-16 13:03:04

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

    リーリー

    もう少し

    返事
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:03:04

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

    返事
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:03:04

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

    を受け取ります

    返事
    0
  • PHP中文网

    PHP中文网2017-05-16 13:03:04

    リーリー

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

    返事
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:03:04

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

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

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

    返事
    0
  • ringa_lee

    ringa_lee2017-05-16 13:03:04

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

    返事
    0
  • キャンセル返事