Получение ошибки 400 от администратора- Ajax в Wordpress - PullRequest
0 голосов
/ 14 июля 2020

Я разрабатываю плагин для клиента, который создает игру с помощью wordpress. Я пытаюсь добавить игроков в массив, относящийся к каждому wp_user. Ему требуется ajax функционал. Я новичок в ajax в wordpress, просмотрел пару руководств, прочитал несколько статей и придумал это решение, но при запуске получаю ошибку 400.

<?php   
 //plugin functions.php
 defined ('ABSPATH') or die('No Direct Access!');


   function ajax_scripts () {
        wp_enqueue_script(
            'ajax_script',
            plugins_url('/assets/js/ajax_script.js',__FILE__)
        );
        

        wp_localize_script(
            'ajax_script',
            'ajax_globals',
            [
                'ajax_url' => admin_url( 'admin-ajax.php'),
                'nonce' => wp_create_nonce( 'ajax_nonce')
            ]
            );
   }
   add_action( 'wp_enqueue_scripts', 'ajax_scripts');

   function add_player () {
       global $wpdb;
       check_ajax_referer('ajax_nonce');
       $username = wp_get_current_user()->user_login;
       $playerName = $_REQUEST;
       $wpdb->insert('DATABASE_NAME', array('account_username' => $playerName, 'player_name' => $playerName));
       $db_reponse = function() {
           echo "<script type='text/javascript'>console.log('success')</script>";
       };
        wp_send_json_success($db_response, $_REQUEST);
   }

   add_action('wp_ajax_add_player', 'add_player');

Это ajax script

    const playerForm = document.getElementById('fname');

if (contactForm) {
    contactForm.addEventListener('submit', (e) => {
        e.preventDefault();
        console.log('this is working');
        fetch('/wp-admin/admin-ajax.php', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            },
            body: new URLSearchParams(new FormData(contactForm))
        }).then(response => {
            return response.json();
        }).then( jsonReponse => {
            console.log({jsonReponse});
        })
    })
}

Кажется, я сузил проблему до самого запроса. Я попытался вернуть вызов API из Star Wars API, если запрос был успешным, но нет go, поэтому я пришел к выводу, что это, должно быть, сама ошибка.

Вы, ребята, видите ошибку, которую я пропустил? Другой вопрос: будет ли ошибка 400, если форма отправлена ​​без каких-либо данных?

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

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