Warum gibt mein WordPress-AJAX-Aufruf „0' zurück, obwohl die PHP-Funktion eine Echo-Anweisung enthält?

Barbara Streisand
Freigeben: 2024-10-30 19:38:03
Original
456 Leute haben es durchsucht

Why is my WordPress AJAX call returning '0' despite having an echo statement in the PHP function?

So rufen Sie Ajax in WordPress auf

Problem

Ein AJAX-Aufruf liefert durchweg „0“ als Ausgabe und verlässt Der Entwickler war verwirrt. Die Datei „functions.php“ enthält folgenden Code:

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

add_action('wp_ajax_nopriv_get_data', 'get_data');
add_action('wp_ajax_get_data', 'get_data');</code>
Nach dem Login kopieren

Mittlerweile erfolgt der AJAX-Aufruf über JavaScript:

<code class="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);

});</code>
Nach dem Login kopieren

Trotz des Versuchs, die Variable $abc auszugeben, das Ergebnis bleibt '0'.

Lösung

In WordPress wird die globale Variable ajaxurl standardmäßig für AJAX-Aufrufe bereitgestellt. Allerdings ist diese Variable im Frontend nicht definiert. Um AJAX-Aufrufe im Frontend zu nutzen, müssen Sie Ajaxurl manuell definieren.

Ein empfohlener Ansatz ist die Verwendung von wp_localize_script. Bedenken Sie, dass sich Ihre AJAX-Aufrufe in „my-ajax-script.js“ befinden. Fügen Sie wp_localize_script wie folgt hinzu:

<code class="php">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' );</code>
Nach dem Login kopieren

Sobald Ihre JS-Datei lokalisiert ist, können Sie auf das my_ajax_object-Objekt in Ihrer JS-Datei zugreifen und Änderungen vornehmen Ihr AJAX-Aufruf entsprechend:

<code class="javascript">jQuery.ajax({
    type: "post",
    dataType: "json",
    url: my_ajax_object.ajax_url,
    data: formData,
    success: function(msg){
        console.log(msg);
    }
});</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWarum gibt mein WordPress-AJAX-Aufruf „0' zurück, obwohl die PHP-Funktion eine Echo-Anweisung enthält?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!