Базовый тест AJAX в WordPress возвращает ошибку 400 - PullRequest
0 голосов
/ 17 января 2019

Итак, я следовал очень простому руководству, чтобы выяснить, как работают вызовы AJAX в WordPress. Вот все соответствующие биты кода:

В functions.php

add_action( 'admin_enqueue_scripts', 'my_enqueue' );
function my_enqueue() {

    wp_enqueue_script( 'ajax-script', get_template_directory_uri() .'/js/my_query.js', array('jquery') );

    // in JavaScript, object properties are accessed as ajax_object.ajax_url, ajax_object.we_value
    wp_localize_script( 'ajax-script', 'ajax_object',
        array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
}

В my_query.js

jQuery(document).ready(function($) {

    console.log('myquery');

    var data = {
        'action': 'my_action',
        'whatever': ajax_object.we_value      // We pass php values differently!
    };
    // We can also pass the url value separately from ajaxurl for front end AJAX implementations
    jQuery.post(ajax_object.ajax_url, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});

и внизу admin-ajax.php

add_action( 'wp_ajax_my_action', 'my_action' );
function my_action() {
    global $wpdb;
    $whatever = intval( $_POST['whatever'] );
    $whatever += 10;
        echo $whatever;
    wp_die();
}

Это охватывает все пункты учебника, но что я получаю, когда загружаю страницу администратора, это ошибка 400, тогда как я должен получать предупреждение, верно?

400 error message

Любые идеи были бы по-настоящему оценены, я на грани ума.

Спасибо.

1 Ответ

0 голосов
/ 18 января 2019

Вы, кажется, добавили свой код в конце admin-ajax.php. То есть не правильный способ сделать это. В общем случае вам никогда не следует редактировать файл WordPress для ядра / администратора, поскольку он будет перезаписан при обновлении WordPress (среди прочих причин).

Даже игнорируя это, причина, по которой он не работает, заключается в том, что admin-ajax.php выполняется только при фактическом запросе, поэтому ваш обратный вызов будет зарегистрирован слишком поздно. Вы должны добавить свою add_action и относительный обратный вызов в functions.php вашей темы или в плагине, чтобы ваши действия были зарегистрированы в нужное время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...