Я относительно новичок в JQuery и AJAX в частности. У меня есть небольшая проблема с возвращаемым значением, всегда равным 0, хотя я думаю, что это на самом деле сообщение об успехе, и оно ничего не возвращает.
Я просмотрел Google-стих и у меня есть функция die () в обратном вызове PHP, и я считаю, что add_actions верны.
Я работаю на локальном хосте, хотя я сомневаюсь, что это влияет на это, и это все в админке, а не в клиентской части. Я также проверил, что js поставлен в очередь и локализован.
Я получаю сообщение 200 OK в области Chrome Developer.
Я также протестировал базовый AJAX с http://codex.wordpress.org/AJAX_in_Plugins, и он также возвратил 0, что заставляет меня задаться вопросом, является ли это чем-то другим, кроме кода, описанного ниже.
Сейчас я просто пытаюсь заставить его отправить что-то обратно в jQuery. Любая помощь будет оценена.
JQuery
jQuery(document).ready(function(){
jQuery('.cl_link_buttons').val('id').click(function() {
var currentid = jQuery(this).attr('id');
//alert(currentid);
console.log(currentid);
jQuery.ajax ( data = {
action: 'cleanlinks_ajax_get_post_data',
url: ajaxurl,
type: 'POST',
dataType: 'text',
"currentid" : currentid
});
jQuery.post(ajaxurl, data, function(response) {
var dataz = response;
alert( dataz );
console.log (dataz); //show json in console
});
return false;
}); //end click event
}); //end doc ready
PHP
add_action("wp_ajax_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
add_action("wp_ajax_nopriv_cleanlinks_ajax_get_post_data", "cleanlinks_ajax_get_post_data");
function cleanlinks_ajax_get_post_data() {
$from_ajax = $_POST['currentid'];
echo "do" . $from_ajax . "something";
die();
}
jQuery('.cl_link_buttons').val('id').click(function()
выглядит странноОтветы:
А
0
означает ответ либо , что действие не установлено (в данном АЯКСЕ) или , что функции обратного вызова действия пользователя не может быть найдено.источник
.always
чтобы захватить это.Что вам нужно сделать, это добавить
die();
в конце вашей функции.Смотрите причину и многое другое здесь: http://codex.wordpress.org/AJAX_in_Plugins
Заметки:
echo
что-то перед выполнениемdie
. Это предотвратит ошибки сервера и поможет при отладке.источник
die()
без вторя что - то, это также даст вам Ошибка 500 Internal Server, и вернуться0
кwp-admin/admin-ajax.php
. Вы должны всегда что-то выводить, даже если вы просто устанавливаете значения и ничего не нужно возвращать. В противном случае, если вы ничего неdie()
получите, и вам придется использовать его.always()
для захвата, потому что его не будет.done()
, он будет,.fail()
потому что он умирает без чего-либо = 500 Ошибка.die();
в функции ajax вfunctions.php
файле, не выводя ничего перед этим, и вызовите действие через ajax, например:var testing = $.ajax( ... ); testing.fail(function(response) { console.log('Failed ' + response); }); testing.done(function(response) { console.log('Success ' + response); }); testing.always(function(response) { console.log('Ajax Request complete: ' + response); });
Так что я решил это. Это был не jQuery как таковой, хотя я улучшил это, это было размещение функции обратного вызова. Я переместил его в основной файл плагина, и он заработал.
источник
У меня та же проблема. И решил это. Вы должны отправить переменную "action", как в примере:
Потому что в wp-admin / admin-ajax.php есть обработчик для переменной действия:
источник
action
параметр. Хотя это, возможно, сработало для вас, здесь не было проблемыПопробуйте запустить этот код на консоли
Я вижу много неправильного в вашем коде JavaScript, и это может быть причиной.
источник
У меня тоже была эта проблема, и это было то, что я использовал
return
вместоecho
своей функции PHP. Изменяя это, чтобыecho
исправить это.источник
У меня была та же проблема, чтобы исправить это я использовал
wp_die()
в конце своей функции сразу послеecho
. Не забудьте передать свое действие вашему сценарию.Чтобы быть уверенным, проверьте, если ваша функция должна использовать
wp_ajax_nopriv
какwp_ajax
.источник
Просто для справки, для тех, кто здесь прибегает к помощи, "запрос ajax возвращает 0": помните, когда вы добавляете действие ajax в метод объекта, чтобы быть уверенным, что модификатор доступа к методам есть
public
.add_action
просто заставляет замолчать, если он не может вызвать ваш метод за пределами$object
.источник
Если вы не используете функцию wp_localize_script () для установки URL-адреса ajax, администратор ajax возвращает 0. Я думаю, что это ошибка Wordpress. Вот пример:
Файл JavaScript (search.js):
источник
// код функции php
источник
Те, кто получает ошибку 0 :), action => 'action'
источник
Надеюсь, это полезно для вас, Бест
источник
Попробуйте добавить
if
заявление:источник