Wordpress ajax запрос 400

В плагине отправляю запрос следующего вида

$.ajax({
    type: "POST",
    url: ajaxurl,
    data: {data : jsonString},
    cache: false,
    success: function (response) {
        $('.plugin-debug').html(response);
    }
});

Получаю load-scripts.php?c=1&load[chunk_0]=jquery-core,jquery-migrate,utils&ver=5.3.2:4 POST http://localhost/wordpress/wp-admin/admin-ajax.php 400 (Bad Request)

html содержимое

<form action="<?php echo site_url(); ?>/wp-admin/admin-ajax.php" id="upload-form" method="POST">
    <input type="hidden" name="action" value="upload_image">
    <div><h3>Загрузите 3 изображения</h3><input id="upload-image" name="image-field" type="button" value="Выбрать изрбражения"></input></div> 
</form>

php скрипт

add_action( 'wp_ajax_upload_image', 'upload_image' );
add_action( 'wp_ajax_nopriv_upload_image', 'upload_image' ); 

function upload_image() {
    echo $_POST['data'];
    die();
}

В data я передаю следующие данные

var attachment = file_frame.state().get('selection').map(); //Данный берутся с media modal
let images = [] //Массив для ссылок
for (let i = 0; i < 3; i++) {
    images.push(attachment[i].toJSON().url); //Достаем ссылку в виде строки
}
let jsonString = JSON.stringify(images); //Ну и тут просто массив строк

В log файлах тоже ничего нет.


Ответы (1 шт):

Автор решения: KAGG Design

Ответ 400 (есть разница с 404, я исправил заголовок), означает, что запрос неправильно сформирован. Посылаемые данные ни при чём, у вас отсутствует action в вызове.

Надо так:

$.ajax({
    type: "POST",
    url: ajaxurl,
    data: {
        data : jsonString,
        action: 'upload_image',
    },
    cache: false,
    success: function (response) {
        $('.plugin-debug').html(response);
    }
});

Подробнее здесь.

→ Ссылка