Worpress错误请求400纯Javascript

时间:2018-10-15 13:03:11

标签: ajax wordpress

在纯JavaScript中使用Ajax时出现以下错误:

  

代码中的“ POST http://localhost:8888/website/wp-admin/admin-ajax.php”(错误请求)400行: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中使用表格标签,它应该在php中调用“ my_action”。

这是我的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 :(得分:0)

在ajax请求中更改此行;

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

    var data = $.param(data);


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


    http.send(data);