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);
          }
   });
14
demandé sur Sumurai8 2011-03-20 23:47:04

9 réponses

Essayez d'ajouter die(); ou exit(); à la dernière ligne de la fonction.

31
répondu zourbuth 2012-11-14 13:24:27

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. :)

12
répondu Wasi Abbas 2013-09-04 13:27:41

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.

9
répondu mart 2012-10-14 06:28:05

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').

6
répondu Steffi 2011-03-20 21:26:27

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.

5
répondu Protector one 2014-06-13 10:02:19

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é).

3
répondu Darin Dimitrov 2011-03-20 20:48:06

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.

2
répondu caffre 2013-06-19 22:05:08

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();
}
2
répondu Seano 2016-03-29 19:05:37

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.

1
répondu James Newell 2014-01-31 10:33:50