Wordpress AJAX-запрос возвращает POST: 400 (классическая ошибка) - как исправить?
Видел я рекомендованные топики, разумеется. Более того, уже не первый десяток таких запросов писал, и в данном проекте их уже 8 - все работают. А вот этот - заколдобило.
Код запроса
$.ajax({
url: "/wp-admin/admin-ajax.php",
method: 'post',
type: 'POST',
data: {
action: 'get_categories_list',
user_type: typeUser,
},
success: function (response) {
console.log(response)
},
error: function (response) {
console.log('initCategoriesList Error', response)
}
})
Код для WordPress оформляется как плагин. Соответственно после написания плагин дезактивировал и снова активировал, чтобы прописались все связи:
$this->loader->add_action('wp_ajax_customer_get_categories_list', $plugin_public, 'get_categories_list_callback' );
$this->loader->add_action('wp_ajax_nopriv_get_categories_list', $plugin_public, 'get_categories_list_callback' );
и сама функция
public function get_categories_list_callback() {
$user_type = $_POST['user_type'];
$res = Categories::listAllCategories($user_type);
$answer = ['code' => 200, 'message' => 'Ok', 'data' => json_encode( $res )];
echo json_encode($answer);
wp_die();
}
И вот что я сделал сейчас не так, если в этом же файле есть еще 2 AJAX-запроса, оформленных также и которые работают? Не было бы таким тривиальным и в то же время непонятно куда копать - сидел бы сам разбирался по докам, но тут что-то я завис.
Ответы (1 шт):
Работать начало потому, что вы разлогинились (или куки умерли по времени). В коде ошибка.
wp_ajax_customer_get_categories_list - НЕ работает для залогиненного пользователя, потому что в $.ajax запросе get_categories_list, без customer.
wp_ajax_nopriv_get_categories_list - работает для НЕ залогиненного пользователя, потому что имя акции указано правильно.


