Ответ 1
Попробуйте добавить die();
или exit();
в самую последнюю строку функции.
Я использую ajax с jquery и когда пытаюсь отобразить результат во всплывающем окне.
Затем предупреждение всегда отображает 0
success : function(results) {
alert(results); }
ИЗМЕНИТЬ:
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); } });
Попробуйте добавить die();
или exit();
в самую последнюю строку функции.
Возможно, вы пытаетесь без входа. поэтому вам нужно использовать это действие.
add_action ('wp_ajax_nopriv_my_action', 'my_action_callback');
вы получите ответ.:)
У меня была аналогичная проблема с admin-ajax.php, возвращающим 0, даже у меня была die().
Моя проблема заключалась в том, что add_action был объявлен в файле, не загруженном по умолчанию плагином.
В любом случае, если у вас есть проблема, также проверьте в браузере, что возвращает __.com/wp-admin/admin-ajax.php?action=youraction.
Нашел.
Нужно добавить die();
до конца моей собственной функции ajax в function.php
.
Потому что есть одна строка script в admin-ajax.php
после моего собственного ajax_action, в котором говорится: die ('0'); Поэтому перед смертью ('0') нам нужно die() script.
Я добавил "действие" неправильно. Вы должны префиксное действие с помощью wp_ajax_gd_
.
add_action('wp_ajax_gd_[ACTION NAME]', '[CALLBACK FUNCTION NAME]')
и в сообщении JS jQuery:
var data = {
'action': '[ACTION NAME]',
};
Я нашел документацию Wordpress очень неясной об этой части.
Вероятно, потому что серверная сторона script, вызываемая с AJAX, возвращает 0
(тот, который вы указали в свойстве url
).
Убедитесь, что имя action файла в порядке. Если он не найден в functions.php, в результате вы получите 0.
У меня была такая же проблема. Я забыл включить плагин. После включения плагина я получил ожидаемые данные.
В вашей функции PHP убедитесь, что вы используете echo
вместо return
.
Это происходило для меня в теме WordPress.
function doAjax() {
$result = getPosts();
echo json_encode($result, true);
die();
}