Ajax: pourquoi le succès affiche 0?
j'utilise ajax avec jquery et quand j'ai essayé d'afficher le résultat dans une fenêtre contextuelle.
Puis alerte affiche toujours 0
success : function(results) {
alert(results); }
EDIT :
var dataToSend = { action:"ACTION_NAME", id : "12" }; url_action = 'http://www.______.com/wp-admin/admin-ajax.php'; $.ajax({ url: url_action, type:'POST', data: dataToSend, success:function(results) { alert(results); } });
9 réponses
Essayez d'ajouter die();
ou exit();
à la dernière ligne de la fonction.
Peut-être que vous essayez sans connexion. donc vous devez utiliser cette action.
add_action ('wp_ajax_nopriv_my_action', 'my_action_callback');
vous obtiendrez la réponse. :)
j'ai eu un problème similaire avec admin-ajax.php retourne 0, j'ai même dû mourir().
mon problème était que l'add_action était déclarée dans un fichier non chargé par défaut par plugin.
en tout cas, si vous avez un problème, vérifiez aussi dans le navigateur que __.com/wp-admin / admin-ajax.php?action=retour de votre action.
Trouvé.
Il faut ajouter die();
avant la fin de ma fonction ajax function.php
.
parce qu'il y a une ligne de script dans admin-ajax.php
après ma propre ajax_action qui dit: die ('0'); donc nous avons besoin de die () script avant die('0').
j'ajoutais" action " incorrectement. Vous devez préfixer votre action avec wp_ajax_gd_
.
add_action('wp_ajax_gd_[ACTION NAME]', '[CALLBACK FUNCTION NAME]')
et dans le JS jQuery post:
var data = {
'action': '[ACTION NAME]',
};
J'ai trouvé la documentation de Wordpress très imprécise sur cette partie.
c'est probablement parce que le script côté serveur que vous appelez avec AJAX retourne 0
(celui que vous avez spécifié dans le url
propriété).
assurez-vous que le nom d'action est ok. Si ça ne se trouve pas dans les fonctions.php, vous obtiendrez 0 comme résultat.
dans votre fonction PHP, assurez-vous que vous utilisez echo
au lieu de return
.
C'était en train de se passer pour moi dans un thème WordPress.
function doAjax() {
$result = getPosts();
echo json_encode($result, true);
die();
}
j'ai eu le même problème. J'avais oublié d'activer le plugin. Après avoir activé le plugin, j'ai reçu les données attendues.