Pourquoi mon appel WordPress AJAX renvoie-t-il « 0 » malgré une instruction echo dans la fonction PHP ?

Barbara Streisand
Libérer: 2024-10-30 19:38:03
original
456 Les gens l'ont consulté

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

Comment appeler Ajax dans WordPress

Problème

Un appel AJAX renvoie systématiquement « 0 » comme sortie, laissant » le développeur perplexe. Le fichier function.php contient le code suivant :

<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>
Copier après la connexion

Pendant ce temps, l'appel AJAX est effectué via 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>
Copier après la connexion

Malgré la tentative de sortie de la variable $abc, le résultat reste '0'.

Solution

Dans WordPress, la variable globale ajaxurl est fournie par défaut pour les appels AJAX. Cependant, cette variable n'est pas définie dans le frontend. Pour utiliser les appels AJAX dans le frontend, vous devez définir ajaxurl manuellement.

Une approche recommandée consiste à utiliser wp_localize_script. Considérez que vos appels AJAX résident dans "my-ajax-script.js", ajoutez wp_localize_script comme suit :

<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>
Copier après la connexion

Une fois votre fichier JS localisé, vous pouvez accéder à l'objet my_ajax_object dans votre fichier JS et modifier votre appel AJAX en conséquence :

<code class="javascript">jQuery.ajax({
    type: "post",
    dataType: "json",
    url: my_ajax_object.ajax_url,
    data: formData,
    success: function(msg){
        console.log(msg);
    }
});</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!