Worpress плохой запрос 400 чистого Javascript - PullRequest
0 голосов
/ 15 октября 2018

Я получаю следующую ошибку, когда использую ajax в чистом javascript:

"POST http://localhost:8888/website/wp-admin/admin-ajax.php" 400 (Bad Request) в коде: this.xhr.send (JSON.stringify (data));

мой файл Contact.js:

var Contact = function(data){
    //setups and others methods
    this.onFormSent = function(data){

        data = {
            action: 'my_action',
            data: data
        };

        if(this.ajaxSendURL !== null){
            this.xhr.open("post", this.ajaxSendURL);
            this.xhr.setRequestHeader("Content-Type", "application/json");

            this.xhr.onload = function() {
                if(self.xhr.status === 200){
                    console.log(self.xhr.responseText);
                    var response = JSON.parse(self.xhr.responseText);            
                    self.onSuccessForm(data);
                }       
            };            
            this.xhr.send(JSON.stringify(data));
        }
    };   
};

Я использую тег формы в html после того, как заполнил свою «форму» и нажал кнопку отправки, это должновызовите my_action в php.

this my function.php:

function add_theme_scripts() {
    wp_enqueue_script('Contact', get_template_directory_uri() . '/js/Contact.js', array(), 1.0, true);
    wp_localize_script('Contact', 'ajaxurl', admin_url('admin-ajax.php'));
}
add_action('wp_enqueue_scripts', 'add_theme_scripts');

/* AJAX */
add_action('wp_ajax_my_action', 'my_action');
add_action('wp_ajax_nopriv_my_action', 'my_action');

function my_action(){
    echo 'msg from server:' + $_POST['data']['name'];
    die();
}

Что я делаю не так?

Обновлено: заменено следующим кодом, и оно работает

this.onFormSent = function(data){
    data = "action=my_function&name=" + dada.name;
    this.xhr.setRequestHeader("Content-Type", "application/json");
    ...
}

1 Ответ

0 голосов
/ 15 октября 2018

Изменить эти строки в запросе ajax;

    data = {
        action: 'my_action',
        data: youdatadata
    };

    var data = $.param(data);


    http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");


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