пример AJAX-вызова WordPress указывает на успех, но не передает данные, которые он должен

#ajax #wordpress

#аякс #wordpress

Вопрос:

Это глупый вопрос, но здесь идет —

Я пытаюсь разобраться в AJAX-вызовах WordPress. В моем PHP-модуле у меня есть

 function example_ajax_request() {
  $fruit = $_POST['fruit'];
  echo $fruit;
  die();
}

add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );
 

В моем JS-файле у меня есть

 jQuery(document).ready(function ($) {
    console.log('ajaxurl', ajaxurl);
    // This is the variable we are passing via AJAX
    var fruit = 'Banana';
    console.log('call fruit', fruit);
    // This does the ajax request (The Call).
    $.ajax({
        url: ajaxurl, // Since WP 2.8 ajaxurl is always defined and points to admin-ajax.php
        data: {
            'action': 'example_ajax_request', // This is our PHP function below
            'fruit': 'apple' // This is the variable we are sending via AJAX
        },
        success: function (data) {
            // This outputs the result of the ajax request (The Callback)
            window.alert('data', data);
        },
        error: function (errorThrown) {
            window.alert('error', errorThrown);
        }
    });

});
 

Чего я не понимаю, так это того, что когда я загружаю страницу, я получаю всплывающее окно с «данными», которое указывает на функцию успеха, но не содержит фактических данных ( echo 'someResult'; часть). Кроме того, я не получаю никаких ошибок в консоли.

Комментарии:

1. Я думаю, потому что alert принимает только один параметр. Измените его на alert(‘data’ data) или используйте console.log

2. Я попробовал оба из них, и кажется, что переменная data по-прежнему пуста

3. добавьте тип: ‘POST’ в параметры ajax-вызова

Ответ №1:

@Aliakseyenka Игорь дал мне идею, и мой окончательный код таков::

 <?php function example_ajax_request() {
  $fruit = $_REQUEST['fruit'];
echo '{fruit:''.$fruit.''}';
die();
}

// This bit is a special action hook that works with the WordPress AJAX functionality.
add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );
 

а также

 jQuery(document).ready(function ($) {
    console.log('ajaxurl', ajaxurl);
    // This is the variable we are passing via AJAX
    var fruit = 'Banana';
    console.log('call fruit', fruit);
    // This does the ajax request (The Call).
    $.ajax({
        url: ajaxurl, // Since WP 2.8 ajaxurl is always defined and points to admin-ajax.php
        data: {
            'action': 'example_ajax_request', // This is our PHP function below
            'fruit': 'apple' // This is the variable we are sending via AJAX
        },
        success: function (data) {
            // This outputs the result of the ajax request (The Callback)
            console.log('the data is: ', data);
        },
        error: function (errorThrown) {
            window.alert('error '   errorThrown);
        }
    });
});
 

Проблема оказалась в $_POST , а не в ECHO .