Come chiamata ajax in wordpress

Mia chiamata ajax uscita è sempre mostrando 0 non so perché

In functions.php ho questo codice

function get_data() {
    $abc = '1';
    $result = $wpdb->get_results("SELECT * FROM ".$wpdb->options ." WHERE option_name LIKE '_transient_%'");
    echo  $result; //returning this value but still shows 0
    wp_die();
}

add_action( 'wp_ajax_nopriv_get_data', 'get_data' );
add_action( 'wp_ajax_get_data', 'get_data' );

E la mia chiamata ajax è in javascript

$('body').on("click", ".re-reset-btn", function(e){

    var panel = $('#re-compare-bar');       

    $.ajax({
             type : "GET",
             dataType : "json",
             url : "/wp-admin/admin-ajax.php",
             data : {action: "get_data"},
             success: function(response) {

                   alert("Your vote could not be added");
                   alert(response);
                }
        });   

    $("#re-compare-bar-tabs div").remove(); 
    $('.re-compare-icon-toggle .re-compare-notice').text(0); 

});

Sto facendo una chiamata ajax in wordpress senza l’uso di plugin, ma non sempre quello che sto passando.Anche Se ho l’uscita $abc ancora mostra 0.

OriginaleL’autore smarttechy | 2017-04-22

3 risposte

  1. 12

    Nel backend è globale ajaxurl variabile definita da WordPress stesso.

    Questa variabile non è creato da WP in frontend. Ciò significa che se si desidera utilizzare le chiamate AJAX in frontend, quindi è necessario definire tale variabile da soli.

    Buon modo per farlo è quello di utilizzare wp_localize_script.

    Presumiamo che il tuo AJAX, chiamate in my-ajax-script.js file, quindi aggiungere wp_localize_script per questo JS file in questo modo:

    function my_enqueue() {
          wp_enqueue_script( 'ajax-script', get_template_directory_uri() . '/js/my-ajax-script.js', array('jquery') );
          wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
     }
     add_action( 'wp_enqueue_scripts', 'my_enqueue' );

    Dopo la localizzazione dell’JS file, è possibile utilizzare my_ajax_object oggetto nel file JS:

    jQuery.ajax({
        type: "post",
        dataType: "json",
        url: my_ajax_object.ajax_url,
        data: formData,
        success: function(msg){
            console.log(msg);
        }
    });
    Si dice my_ajax_object non è definito
    wp_local_script, si prega di sostituire il più wp_localize_script ora ho modificato il codice

    OriginaleL’autore Vigneshwaran J

  2. 2

    Aggiungere admin-ajax.php utilizzando admin_url('admin-ajax.php');

    <script type="text/javascript">
        $('body').on("click", ".re-reset-btn", function(e){
    
                var panel = $('#re-compare-bar');       
    
                $.ajax({
                         type : "POST",
                         dataType : "json",
                         url : "<?php echo admin_url('admin-ajax.php'); ?>",
                         data : {action: "get_data"},
                         success: function(response) {
    
                               alert("Your vote could not be added");
                               alert(response);
                            }
                    });   
    
                $("#re-compare-bar-tabs div").remove(); 
                $('.re-compare-icon-toggle .re-compare-notice').text(0); 
    
            });
        </script>
    Questo codice è all’interno di un file javascript…….quindi non è in esecuzione <?php echo admin_url(‘admin-ajax.php’); ?>
    si può mettere il codice in footer.php file prima di <?php wp_footer(); ?>.

    OriginaleL’autore Shital Marakana

  3. 0

    Se hai trovato 0 nella risposta, la chiamata ajax funziona correttamente.
    Ma, non è stato definito $wpdb come una variabile globale in funzione get_data.
    Controllare il log di errore, è necessario vedere il loro errore.
    Provare:

    function get_data() {
    global $wpdb;
            $abc = '1';
            $result = $wpdb->get_results("SELECT * FROM ".$wpdb->options ." WHERE option_name LIKE '_transient_%'");
            echo  $result; //returning this value but still shows 0
            wp_die();
    
    }

    OriginaleL’autore Awais Umar

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *