Ma sortie d'appel ajax affiche toujours 0 car la sortie ne sait pas pourquoi
Dans functions.php
j'ai ce code
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' );
Et mon appel ajax est en 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);
});
Je fais un appel ajax dans wordpress sans utiliser de plugin mais je n’obtiens pas ce que je passe. Même si je produis toujours $ abc, il affiche 0.
Dans le backend, il existe une variable globale ajaxurl définie par WordPress lui-même.
Cette variable n'est pas créée par WP dans le frontal. Cela signifie que si vous voulez utiliser les appels AJAX en front-end, vous devez alors définir vous-même cette variable.
Une bonne façon de faire est d'utiliser wp_localize_script.
Supposons que vos appels AJAX se trouvent dans le fichier my-ajax-script.js, puis ajoutez wp_localize_script pour ce fichier JS comme suit:
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' );
Après avoir localisé votre fichier JS, vous pouvez utiliser l'objet my_ajax_object dans votre fichier JS:
jQuery.ajax({
type: "post",
dataType: "json",
url: my_ajax_object.ajax_url,
data: formData,
success: function(msg){
console.log(msg);
}
});
Ajoutez admin-ajax.php en utilisant 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>
Si vous obtenez 0 dans la réponse, cela signifie que votre appel ajax fonctionne correctement ..__ Mais vous n'avez pas défini $ wpdb en tant que variable globale dans votre fonction get_data. Consultez votre journal d’erreurs, vous devez y voir une erreur. Essayer:
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();
}