0

こんにちは、チェックボックスを使用して複数のアイテムを削除する必要があるワードプレスプラグインに取り組んでいます。すべての行をチェックして削除すると、行IDがjson文字列の形式で取得されます。js コード:

$('.check_it:checked').each(function (i){
                            c[i]=$(this).val();                         
                        });         

                        var chk = JSON.stringify({ list: c });
                        debugger

                        $.ajax({
                                        type:"POST",
                                        data: chk,
                                        url:'/word/wp-content/plugins/craiglist/action.php?action=delete_leads',
                                        dataType: "json",
                                        success:function(response){
                                                            alert('fdsfsfdsfd');                    
                                            },  
                                        failure:function (response) {
                                                alert("Please Try Again");
                                            },
                                        error:function (xhr, status, error) {

                                                alert(xhr.response);           
                                            }
                                    });

var chk で、次のような文字列を取得しました

"{"list":["151","152","153","154","155","156","157","158","159","160","161","162","163","164","165","166","167","168","169","170","171","172","173","174","175"]}"

PHPのサーバー側で取得してデータベースに送信して、いわゆる行を削除するにはどうすればよいですか。

4

2 に答える 2

0

get_header() 関数を呼び出していないため、サーバー側の php では、このコードを手動で追加する必要がrequire_once('../../../wp-load.php');あり、グローバル $wpdb; を呼び出すことができます。安全ですべてのwp機能。また、php ファイルは、functions.php およびその他のコア ファイルと一緒にテーマ内にある必要があることに注意してください。テーマ内の別のディレクトリに配置しないでください

于 2013-10-17T14:58:07.063 に答える
0

投稿データとして JSON を送信しているため、PHP 側で生の投稿データにアクセスする必要があります。これは次のように実行できます。

$obj = json_decode($HTTP_RAW_POST_DATA);
foreach($obj->list as $item)
{
    // delete from mytable
    $wpdb->query( 
        $wpdb->prepare("DELETE FROM mytable WHERE id = %d", $item)
    );
}

変数にデータが必要な場合は$_POST、ajax リクエスト データを次のように変更する必要があります。

$.ajax({
    ....
    data: { list : JSON.stringify(c) },
    ....

さて、PHP 側では$_POST['list']. したがって、次のことができます。

$obj = json_decode($_POST['list']);
foreach($obj->list as $item)
{
    // delete from mytable
    $wpdb->query( 
        $wpdb->prepare("DELETE FROM mytable WHERE id = %d", $item)
    );
}
于 2013-10-17T13:56:22.957 に答える