L'appel Ajax renvoie toujours 0
-
-
Avez-vousessayé de [déboguer] (http://wordpress.stackexchange.com/a/96556/73) votre code?Utilisez aussi `admin_url ('admin-ajax.php')`pour obtenir l'URL AJAX,pas une URLinventée.Have you tried to [debug](http://wordpress.stackexchange.com/a/96556/73) your code? Also use `admin_url( 'admin-ajax.php' )` to get the AJAX URL, not some made-up URL.
- 0
- 2013-08-30
- fuxia
-
5 réponses
- votes
-
- 2013-08-30
Pourriez-vousplacer l'action (ajaxConversion) dans vos donnéeset vérifier?
jQuery.ajax({ type:"POST", url: ajaxurl, data: { action: "ajaxConversion", amount: amountToConvert }, success:function(data){ alert(data); }, error: function(errorThrown){ alert(errorThrown); } });
Could you place the action (ajaxConversion) in your Data and check?
jQuery.ajax({ type:"POST", url: ajaxurl, data: { action: "ajaxConversion", amount: amountToConvert }, success:function(data){ alert(data); }, error: function(errorThrown){ alert(errorThrown); } });
-
Cela ajoutetoujours un 0 àmon contenu.This is still appending a 0 to my content somehow.
- 0
- 2014-03-26
- Ben Racicot
-
@BenRacicot: Pouvez-vous vérifier si vous avez desinstructions qui affichent commeecho,die (),etc. dans votre code PHP?@BenRacicot : Can you check if you have any statements that does output like echo, die(), etc in your PHP code?
- 1
- 2014-03-27
- Jayawi Perera
-
Hey Jay,il s'avère que l'ajout de die ();àmon ajaxfunc l'a corrigé!Hey Jay, Turns out adding die(); to my ajax func fixed it!
- 2
- 2014-03-27
- Ben Racicot
-
- 2015-07-08
L'utilisation de
wp_die();
à lafin de lafonction AJAX a résolu leproblèmepourmoi.parexemple
add_action( 'wp_ajax_my_ajax_function', 'my_ajax_function' ); function my_ajax_function(){ echo json_encode($myvar); wp_die(); }
using
wp_die();
at the end of AJAX function fixed the issue for me.e.g
add_action( 'wp_ajax_my_ajax_function', 'my_ajax_function' ); function my_ajax_function(){ echo json_encode($myvar); wp_die(); }
-
merci ...je ne saispaspourquoimaisen utilisantjuste die ()n'apasfonctionné.thanks... dont know why but using just die() didnt work.
- 0
- 2015-07-12
- Sagive SEO
-
- 2016-02-07
Pourmoi,l'astuce était d'ajouter l'action
wp_ajax_nopriv
.J'aitesté le script sur unnavigateur lorsquej'étais connecté à l'administrateur WP,puisj'aiessayé lemême script dans Chromeet j'ai réalisé que le scriptne fonctionnaitpas.Après avoirmiswp_ajax_nopriv
,tout a commencé àfonctionner.:)add_action( 'wp_ajax_nopriv_erase_uploaded_images', 'erase_uploaded_images' ); add_action( 'wp_ajax_erase_uploaded_images', 'erase_uploaded_images' ); function erase_uploaded_images() { $attach_id = filter_input( INPUT_POST, 'attach_id' ); wp_delete_attachment( $attach_id ); if ( isset( $_SESSION['uploaded_images'] ) ) { $array_attachments = $_SESSION['uploaded_images']; if ( ( $key = array_search( $attach_id, $array_attachments ) ) !== false ) { unset( $array_attachments[$key] ); } $_SESSION['uploaded_images'] = $array_attachments; } wp_die(); }
For me the trick was to add
wp_ajax_nopriv
action. I tested the script on one browser when I was logged in WP admin, and then I tried same script in Chrome and realized that the script doesn't work. After I putwp_ajax_nopriv
, everything started to work. :)add_action( 'wp_ajax_nopriv_erase_uploaded_images', 'erase_uploaded_images' ); add_action( 'wp_ajax_erase_uploaded_images', 'erase_uploaded_images' ); function erase_uploaded_images() { $attach_id = filter_input( INPUT_POST, 'attach_id' ); wp_delete_attachment( $attach_id ); if ( isset( $_SESSION['uploaded_images'] ) ) { $array_attachments = $_SESSION['uploaded_images']; if ( ( $key = array_search( $attach_id, $array_attachments ) ) !== false ) { unset( $array_attachments[$key] ); } $_SESSION['uploaded_images'] = $array_attachments; } wp_die(); }
-
Ceci,mon ami,m'a sauvé 2 heures defrustration.Une autre leçon à apprendre lors du déploiement de votre application dans un autreenvironnement T_TThis, my friend, has saved me 2 hours of frustrating. Another lesson to learn when deploy your application to another environment T_T
- 0
- 2017-06-01
- Tree Nguyen
-
C'esttrès vrai ... si vous êtes connecté à admin,lafonction _noprivn'estpas appeléeThis is very true...if you're logged in to admin then _nopriv function is not called
- 0
- 2017-11-07
- Michal Holub
-
- 2017-02-18
Je recommande d'utiliser wp_send_json_success () et wp_send_json_error () côté serveur. Vousn'avezpas à vous soucier de die ()etcet la variable "status"estenvoyée automatiquement,c'estbeaucouppluspropre de cettefaçon. Parexemple
function ajaxConversion(){ // ... wp_send_json_success(array( 'amount' => $amount )); }
Cela aboutira à quelque chose comme ceci:
{ "success":true, "data":{"amount":125} }
Vouspouvez doncextrairefacilement les valeurs de votre appel ajax:
jQuery.ajax({ type : 'post', data : { action: 'ajaxConversion', //nonce : ajax.nonce }, dataType : 'json', url : ajax.ajaxurl, success : function(data){ if(data.success) { alert(data.amount); } else { alert(data.data.message); } } });
Une autre chose courante quej'ai rencontrée sont lesfautes defrappe dans lenom de l'action. Ils doivent être wp_ajax_nopriv_ {action} ou wp_ajax_ {action} unefois connecté. Parexemple,wp-ajax_nopriv,en est un quej'aifaitplusieursfois dans lepassé.
I would recommend using wp_send_json_success() and wp_send_json_error() on server side. You don't need to worry about die() etc and the "status" variable is sent automatically, it's much cleaner this way. For example
function ajaxConversion(){ // ... wp_send_json_success(array( 'amount' => $amount )); }
Will result in something like this:
{ "success":true, "data":{"amount":125} }
So then you can do easily extract the values in your ajax call:
jQuery.ajax({ type : 'post', data : { action: 'ajaxConversion', //nonce : ajax.nonce }, dataType : 'json', url : ajax.ajaxurl, success : function(data){ if(data.success) { alert(data.amount); } else { alert(data.data.message); } } });
Another common thing i've ran into are typos in the action name. They should be wp_ajax_nopriv_{action} or wp_ajax_{action} when logged in. For example, wp-ajax_nopriv, is one I've done several times in the past.
-
ce droitici devrait être la réponse correcteet acceptée.incroyable!this right here should be the correct and accepted answer. amazing!
- 0
- 2020-02-11
- eballeste
-
- 2016-03-29
Pourmoi,c'était lefait quej'utilisais
return
au lieu deecho
dansmafonction PHP.Le changerenecho
l'a corrigé.function doAjax() { $result = getPosts(); echo json_encode($result, true); die(); }
For me it was the fact that I was using
return
instead ofecho
in my PHP function. Changing it toecho
fixed it.function doAjax() { $result = getPosts(); echo json_encode($result, true); die(); }
J'ai unproblème avec AJAX renvoyanttoujours 0!
J'aitoutfait à la lettreet jen'arrivepas à comprendre ce quine vapas?Veuillez aider !!
Voicimon appel Ajax:
Et lafonction dansfunctions.phpest: