2017-04-22 3 views
2

Meine Ajax-Aufruf Ausgang rufen immer 0 als Ausgang zeigt nicht wissen, warumWie Ajax in Wordpress

In functions.php ich diesen Code haben

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'); 

Und Anruf meine Ajax in ein Javascript

ist
$('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); 

    }); 

ich mache ajax-Aufruf in Wordpress ohne Plugin Einsatz aber nicht bekommen, was ich passing.Even bin Wenn ich Ausgang $ abc noch zeigt es 0

Antwort

5

Im Backend gibt es globale ajaxurl Variable von Wordpress selbst definiert.

Diese Variable wird nicht von WP im Frontend erstellt. Dies bedeutet, dass Sie, wenn Sie AJAX-Aufrufe im Frontend verwenden möchten, diese Variable selbst definieren müssen.

Guter Weg, dies zu tun ist, wp_localize_script zu verwenden.

Nehmen wir an, Ihre AJAX Anrufe sind in my-Ajax-script.js Datei, dann wp_localize_script hinzufügen für diese wie so Datei JS:

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'); 

Nach der JS-Datei Lokalisieren Sie my_ajax_object Objekt verwenden, können in Ihrem JS-Datei:

+0

Es sagt mein_ajax_object ist nicht definiert – smarttechy

+0

wp_local_script bitte ersetzen Sie dies als wp_localize_script jetzt habe ich den Code geändert –

1

hinzufügen Admin-ajax.php von 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> 
+0

Dieser Code ist in einer Javascript-Datei ....... so dass es nicht läuft smarttechy

+0

Sie können Ihren Code in die Datei footer.php stellen, bevor . –

0

mit dem Wenn Sie 0 in der Antwort erhalten, bedeutet dies, Ihr Ajax-Aufruf korrekt funktioniert. Sie haben jedoch $ wpdb nicht als globale Variable in Ihrer Funktion get_data definiert. Überprüfen Sie Ihr Fehlerprotokoll, Sie müssen dort Fehler sehen. Versuchen:

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(); 

}