Не могли бы вы поместить действие (ajaxConversion) в свои данные и проверить?
function your_ajax_function(){ $result = json_encode($result); echo $result; }
||answer||
с использованием add_action("wp_ajax_your_ajax_function", "your_ajax_function");
at the end of AJAX function fixed the issue for me.
например
function doAjax() {
$result = getPosts();
echo json_encode($result, true);
die();
}
||answer||
Для меня трюк заключался в том, чтобы добавить echo
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 put echo
, все начало работать. :)
return
||answer||
Я бы рекомендовал использовать wp_send_json_success() и wp_send_json_error() на стороне сервера.
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);
}
}
});
Вам не нужно беспокоиться о die() и т. д., а переменная «status» отправляется автоматически, так намного чище. Например
{
"success":true,
"data":{"amount":125}
}
В результате получится что-то вроде этого:
function ajaxConversion(){
// ...
wp_send_json_success(array(
'amount' => $amount
));
}
Итак, вы можете легко извлечь значения из вашего вызова ajax: Еще одна распространенная вещь, с которой я столкнулся, — это опечатки в названии действия. Они должны быть wp_ajax_nopriv_{действие}
или wp_ajax_{действие}
при входе в систему. Например, wp-ajax_nopriv — это то, что я делал несколько раз в прошлом.