Wordpress

Hogyan lehet elkerülni az admin-ajax.php 400 rossz kérés hibáját, amikor az ajaxot próbálja használni a WordPress beépülő moduljában

Amikor az ajax technich-et próbálja használni a wordpress beépülő modulok fejlesztésében, van némi eltérés a normál módtól. Nagyon régóta dolgozom és keresgélek rajta, nagyon nehéz egyetlen bejegyzést összegyűjteni, hogy egyértelművé tegyem. Tehát itt megpróbálok jobb magyarázatot adni ennek minden kulcsfontosságú pontjáról.

Mivel az ajax használatának módja a wordpress háttérben eltér előtérben és háttérben, könnyebb. A témát csak az előtérre fogom összpontosítani.

Mielőtt elolvasná ezt a cikket, kérjük, győződjön meg arról, hogy rendelkezik a WordPress beépülő modulok fejlesztésével, ajax-szal, php-vel stb. kapcsolatos alapvető ismeretekkel, hogy ne vesztegesse az idejét az elolvasására, és ne kapjon segítséget.

Remek, kezdjük.

Kulcspont 1

Ha van egy külön JavaScript-fájlja , tegyük fel, hogy a fájl a js/your_ajax_script.js a beépülő modul mappájában, akkor először győződjön meg arról, hogy a  wp_enqueue_script() segítségével tartalmazza ezt a szkriptet. majd a wp_localize_script() segítségével hozzon létre egy ajax_objectet a további használatra.

add_action( 'wp_enqueue_scripts', array($this, 'enqueue_frontend_script') );

function enqueue_frontend_script(){
        wp_enqueue_script( 'ajax-script', PLUGIN_URL . 'js/your-ajax-script.js', array('jquery') );
        wp_localize_script( 'ajax-script', 'your_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}

A PLUGIN_URL egy konst, amely a beépülő modul URL-címére hivatkozik, a your_ajax_object az ajax_object neve, tetszés szerint nevezheti el. Az array(‘ajax_url’ => admin_url(‘admin-ajax.php’) a your_ajax_object ajax_url tulajdonságának definíciója. Győződjön meg arról, hogy nincsenek elírási hibák az admin_url(‘admin-ajax.php’ )

Kulcspont 2

Nézzük először a forgatókönyvet.

jQuery(document).ready(function($){
    $('.btn_del_row').click(function(){
        var id = $(this).data('id');
        var confirmalert = confirm("Are you sure ?");
        if (confirmalert == true) {
            var data = {
                'action': 'your_ajax_action',
                'id'    : id,
            };
            jQuery.post( your_ajax_object.ajax_url, data, function(response){
                alert('Got this from the server: ' + response);
            });
        }
    });
});

Ebben a javascriptben győződjön meg arról, hogy a megadott ajax_object-et és annak tulajdonságát használja, esetünkben ez a your_ajax_object.ajax_url.

A művelethez küldött adatokban meg kell említeni a művelet nevét , esetünkben ez az ‘action’ illat: ‘your_ajax_action’, ezt a művelet nevét tetszés szerint nevezheti el, de ne feledje, hogy a pontosan ugyanazt a nevet, ahol szükség van rá. Meglátod.

Kulcspont 3

Kapcsolja be a műveleti funkciót a bejelentkezett és a bejelentkezett felhasználók számára.

add_action( 'wp_ajax_your_ajax_action', 'your_ajax_action' );
add_action( 'wp_ajax_nopriv_your_ajax_action', 'your_ajax_action' );

function your_ajax_action (){
    global $wpdb;
    $id = $_POST['id'];
    // do something you like ...
    echo $result;
    wp_die();
}

Tekintse meg a fenti kódot, remélem észrevette, hogy 5 helyen ugyanazt a szót használja, mint a “your_ajax_action”, amely a javascript kódban van meghatározva. ennek pontosan ugyanannak kell lennie, különben nem fog működni.

A php függvény végén ne felejtsd el bezárni a wp_die();

Az ajax használata a wordpress beépülő modulban kissé bosszantó, de remélem, sikeres lesz, miután követi a magyarázatomat.

Küldjön üzenetet nekünk

    Geehootek szoftver és hálózati stúdió

    Elérhetőségek

    Nagykovácsi, Besenyőtelek u. 2, 2094

    +36309964556

    Official@geehootek.com

    Ha bármilyen kérdése van azzal kapcsolatban, hogyan segíthetnénk cége üzleti tevékenységét, kérjük, küldjön nekünk üzenetet, és hamarosan felvesszük Önnel a kapcsolatot.

    Vélemény, hozzászólás?

    Az e-mail címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük