J'utilise donc cette configuration pour un appel AJAX dans la zone administrative ( comme ceci ):
add_action( 'admin_head', 'ajaxPerNgg' );
function ajaxPerNgg(){ ?>
<script type="text/javascript" >
jQuery(document).ready(function() {
jQuery("#message").remove();
jQuery("#errore a#attivo").click(
function(){
var data = {
action: 'my_action'
};
jQuery.post(ajaxurl, data, function(response) {
if(response == "attivato")
jQuery("#errore a#inattivo").attr("id","completato").html("Attivato");
else
jQuery("#errore a#inattivo").attr("id","attivo").html("Attivalo ora");
});
}
);
});
</script>
<?php }
add_action('wp_ajax_my_action', 'my_action_callback');
function my_action_callback() {
echo 'attivato';
die();
}
C'est juste un code de test, mais il retourne toujours 0 au lieu de la chaîne "attivato". Il trouve également l'url ajax correctement, sans erreur 404.
Quel est le problème?
wp_ajax_my_action
partie "my_action" doit correspondre à l'action utilisée dans le post jQuery. Je vois que le vôtre correspond, donc ce n'est pas le problème dans votre cas. Je le fais également fonctionner depuis la page d'administration, ce que vous essayez de faire. Êtes-vous connecté lorsque vous essayez de passer cet appel ajax? Ou êtes-vous déconnecté?Réponses:
Ajouter cela aussi:
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
. Remarquez lenopriv
.Cela résoudra votre problème!
la source
J'ai eu le même problème. Solution:
Si vous n'ajoutez pas les deux (avec et sans nopriv), cela fonctionnera en mode connecté ou déconnecté uniquement. nopriv est pour déconnecté, l'autre pour connecté.
la source
Je ne sais pas si c'est votre problème, mais j'obtenais une réponse de "0" et cela m'a pris le plus de temps pour le comprendre. En plus de vous assurer que vous mettez
exit
oudie
à la fin de votre fonction php, j'ai découvert que vous devez mettre votreadd_action('wp_ajax_...
bit au niveau supérieur de votre plugin. Je l'avais emboîté dans monadmin_menu
crochet, ce qui n'a pas fonctionné. Je ne sais pas si votre code ci-dessus fait partie d'une inclusion à l'intérieur d'une fonction de votre fichier php de plugin de niveau supérieur (comme le mien l'était).la source