I use ajax with jquery and when I tried to display the result in popup.
Then alert always displays 0
success : function(results) {
alert(result
May be you are trying without login. so you need to use this action.
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');
you will get response. :)
Found it.
It need to add die();
before the end of my own ajax function in function.php
.
Because there is one line of script in admin-ajax.php
after my own ajax_action that says: die('0'); So we need to die() script before die('0').
Those who get error 0 :), action => 'action'
var data = {'action': 'my_action', 'data': form_data };
$.post(ajaxurl, data, function(response) { alert(response);});
I was adding the "action" incorrectly. You have to prefix your action with wp_ajax_gd_
.
add_action('wp_ajax_gd_[ACTION NAME]', '[CALLBACK FUNCTION NAME]')
and in the JS jQuery post:
var data = {
'action': '[ACTION NAME]',
};
I found Wordpress' documentation very unclear about this part.
In your PHP function, make sure you're using echo
instead of return
.
This was happening for me in a WordPress theme.
function doAjax() {
$result = getPosts();
echo json_encode($result, true);
die();
}
Try to add die();
or exit();
at the very last line of the function.