Intereting Posts
Категория Post Loop сначала показывает родительский, затем дочерний код плагина вытаскивает информацию из базы данных в одном экземпляре, а не в другую. Что не так? add_action (), add_filter () до или после функции Как мне get_the_postID () для настраиваемого сообщения, которое использует поле повторителя ACF? разбиение на страницы разбито, потому что wordpress добавляет index.html Как виджет может быть запущен с помощью короткого кода WP для основного сайта и двух блогов – реализация Вложенные короткие коды не работают на моей странице WordPress 4.8 Предупреждать пользователя о том, что данные могут быть потеряны для пользовательских страниц Запросить сообщения и вернуть XML Мета-ящик с интерфейсом Преобразование WP Gallery Plugin в стандартную WP Gallery Могу ли я изменить форму контакта 7 на новую страницу? Плановая задача WordPress вызывается, но не выполняется Проблема с распространением контента Facebook

Admin Ajax возвращается 0

Я относительно новичок в jQuery и AJAX, в частности. У меня небольшая проблема с возвращаемым значением, всегда равным 0, хотя я думаю, что это на самом деле сообщение об успешности, и оно ничего не возвращает.

Я просмотрел Google-стих, и у меня есть функция die () в обратном вызове PHP, и я считаю, что add_actions верны.

Я работаю над локальным хостом, хотя я сомневаюсь, что это влияет на него, и все это в админе, а не в интерфейсе. Я также проверил, что js находится в очереди и локализована.

Я получаю сообщение 200 OK в области разработки Chrome.

Я также тестировал базовый 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(); } 

Solutions Collecting From Web of "Admin Ajax возвращается 0"

Ответ 0 означает, что действие не установлено (в данных ajax) или что функция обратного вызова действия не может быть найдена.

Что вам нужно сделать, это добавить die(); в конце вашей функции.

См. Причину и многое другое здесь: http://codex.wordpress.org/AJAX_in_Plugins

Заметки:

  • Вы должны echo что-то перед тем, как выполнить die . Это предотвратит ошибки сервера и поможет при отладке.

У меня такая же проблема. И решил. Вы должны отправить переменную «действие», как в примере:

 var dataString = {lat: '55.56', lng: '25.35', action:'report_callback'}; $.ajax({ url: "http://domain.net/wp-admin/admin-ajax.php", type: "POST", //some times you cant try this method for sending action variable //action : 'report_callback', data:dataString, success: function(data){ console.log(data); }, error: function() { console.log("Error"); } }); 

Потому что в wp-admin / admin-ajax.php используется обработчик для переменной действия:

 if ( empty( $_REQUEST['action'] ) ) {...} Line 26 

Попробуйте запустить этот код на консоли

 jQuery.post(ajaxurl, {action:'cleanlinks_ajax_get_post_data'}, function(response) { console.log (response); }); 

Я вижу много ошибок в вашем JavaScript-коде, и это может быть причиной.

Так что я справился. Это не был jQuery как таковой, хотя я улучшил это, это было размещение функции обратного вызова. Я переместил его в основной файл плагина, и он сработал.

У меня тоже была эта проблема, и именно в моей функции PHP я использовал return вместо echo . Изменение его, чтобы echo зафиксировать его.

 function doAjax() { $result = getPosts(); echo json_encode($result, true); die(); } 

У меня была та же проблема, чтобы исправить wp_die() Я использовал wp_die() в конце моей функции сразу после echo . Не забудьте передать свое действие на свой скрипт.

Убедитесь, что ваша функция должна использовать wp_ajax_nopriv как wp_ajax .

Только для справки, для тех, кто получает здесь googling, «ajax request возвращает 0»: помните, когда вы добавляете ajax-действие к методу объекта, чтобы убедиться, что методы доступа к модификатору являются public .

 add_action( 'wp_ajax_my_action', [$object, 'my_method']); 

add_action просто молчат, если он не может вызвать ваш метод вне $object .

Если вы не используете функцию wp_localize_script () для установки ajax url, admin ajax возвращает 0. Я думаю, что это ошибка WordPress. Вот пример:

  wp_enqueue_script( 'search_js', get_template_directory_uri() . '/js/search.js', array( 'jquery' ), null, true ); wp_localize_script( 'search_js', 'ajaxurl', admin_url( 'admin-ajax.php' ) ); 

Файл javascript (search.js):

  $('#search_input').autocomplete({ source: function(request, response) { $.ajax({ type: 'POST', dataType: 'json', url: ajaxurl, data: 'action=my_custom_action_search&search_criteria=' + request.term, success: function(data) { response(data); }, error: function(errorThrown){ console.log(errorThrown); } }); }, minLength: 3 }); 
 ВЫ ПЫТАЕТЕСЬ:

 add_action ('init', 'ly_form_ajax_init');


 функция ly_form_ajax_init () {
     wp_register_script ('ly-form-ajax-script', plugins_url (). '/ ly-form / js / ly-script.js', array ('jquery'));
     wp_enqueue_script ( 'LY-форм-Ajax-скрипт');

     wp_localize_script ('ly-form-ajax-script', 'ly_form_ajax_object', массив (
         'ajaxurl' => admin_url ('admin-ajax.php'),
         'redirecturl' => home_url (),
         'loadingmessage' => __ ('')
     ));
 }
 // Действие: contact_ajax
 add_action ('wp_ajax_contact_ajax', 'my_function');
 add_action ('wp_ajax_nopriv_contact_ajax', 'my_function');

 function my_function () {
     ob_clean ();
     эхо "http://sanvatvungcao.com";
     wp_die ();
 }

 / **
  * Короткое описание кода на странице: [ly-form]
  * @param type $ atts
  * @param type $ content
  * @return string
  * /
 function ly_form_shortcode ($ atts, $ content = "") {
     echo html_form_code ();
 }
 add_shortcode ('ly-form', 'ly_form_shortcode');

 // HTML-форма покажет,
 function html_form_code () {
     $ html = "";
     $ html. = '';
     $ html. = '';

     $ html. = ' 

Họ đệm *

«; $ html. = '

10 *

«; $ html. = '

Địa chỉ *

«; $ html. = '

Эл. адрес *

«; $ html. = '

Nội dung * dg

«; $ html. = ''; $ html. = ''; $ html. = ''; $ html. = ''; return $ html; } И ЗДЕСЬ js (ly-script.js): (функция ($) { $ (document) .ready (function () { // Выполните форму формы AJAX $ ('form.ly-form-ex'). on ('submit', function (e) { e.preventDefault (); $ ( '# Загрузки') HTML ( 'загрузка ...'). var dataString = {действие: 'contact_ajax'}; $ .ajax ({ тип: «POST», url: ly_form_ajax_object.ajaxurl, данные: dataString, успех: функция (данные) { $ ( '# Загрузка') HTML (данные). }, error: function (errorThrown) { оповещения (errorThrown); } }); }); }); // готово готово }) (jQuery);

Надеюсь, это полезно для вас, Best

Попробуйте добавить оператор if :

 function my_function(){ $id = $_POST['variation_id']; if(isset($_POST['variation_id'])) { //your coded function die(); } }// end function