Javascript 使用Ajax和reCaptcha v3的WP联系表单-错误400

Javascript 使用Ajax和reCaptcha v3的WP联系表单-错误400,javascript,php,wordpress,recaptcha,recaptcha-v3,Javascript,Php,Wordpress,Recaptcha,Recaptcha V3,我正试图在WordPress中制作一个联系表单,但我想让ReCAPTCHAV3检查提交的内容 目前我得到一个错误400 这是我的代码: HTML <form action="" method="post" name="bureau-contact" id="bureau-contact"> <div class="row">

我正试图在WordPress中制作一个联系表单,但我想让ReCAPTCHAV3检查提交的内容

目前我得到一个错误400

这是我的代码:

HTML

        <form action="" method="post" name="bureau-contact" id="bureau-contact">
        <div class="row">

            <div class="form-field col-12">
                <label for="name">Name</label><br>
                <input name="name" id="name" type="text" required>
            </div>
            
            <div class="form-field col-12 col-lg-6">
                <label for="email">Email</label><br>
                <input name="email" id="email" type="email" required>
            </div>
            
            <div class="form-field col-12 col-lg-6">
                <label for="phone">Phone</label>
                <input name="phone" id="phone" type="text">
            </div>
            
            <div class="form-field col-12">    
                <label for="message">Message</label><br>
                <textarea name="message" id="message" required></textarea>
            </div>

            <input type="hidden" name="action" value="send_form" style="display: none; visibility: hidden; opacity: 0;">

            <div class="col-12">
                <button type="submit" class="btn btn-primary">Send message</button>
            </div>
            
        </div> <!-- .row -->
    </form>
Javascript(JQuery)


jQuery(文档).ready(函数($){
jQuery('form#bureau contact')。关于('submit',函数(e){
e、 预防默认值();
grecaptcha.ready(函数(){
grecaptcha.execute('6lcrmq0aaaacy4ghc4v-6B3w3Cy_LjUFUnkJUB',{action:'bureau contact'})。然后(函数(令牌){
$('form#bureau contact')。前缀(“”);
$('form#bureau contact')。前缀(“”);
$('form#bureau contact')。解除绑定('submit')。提交();
让form_data=jQuery(this).serializeArray();
form_data.push({'name':'security','value':''''});
jQuery.ajax({
url:“”,
键入:“post”,
数据:表格数据,
成功:功能(响应){
警报(响应);
},
失败:功能(错误){
警报(“出现错误:+err”);
}
});
});
});
返回false;
});
});
目前我遇到了一个错误400,比如ajax请求没有在functions.php中发送或到达我的php

在尝试在JavaScript中实现reCAPTCHA之前,我没有遇到任何问题,因此我认为问题出在JavaScript中

(我知道我还没有在后端部分实现reCAPTCHA,但目前提交甚至还没有到达后端,因为我的JavaScript有问题。)

add_action('wp_ajax_bureau_contact', 'bureau_contact');
add_action('wp_ajax_nopriv_bureau_contact', 'bureau_contact');

function bureau_contact(){

check_ajax_referer( 'secure_nonce_name', 'security' );

 if ( empty( $_POST["name"] ) ) {
    echo "Insert your name please";
    wp_die();
}

if ( ! filter_var( $_POST["email"], FILTER_VALIDATE_EMAIL ) ) {
    echo 'Insert your email please';
    wp_die();
}

if ( empty( $_POST["message"] ) ) {
    echo "Insert your comment please";
    wp_die();
}

$to = 'mail@emilrauhe.dk';

$subject = 'Besked fra din kontaktformular på Atevo';

$body  = 'From: ' . $_POST['name'] . '\n';
$body .= 'Email: ' . $_POST['name'] . '\n';
$body .= 'Message: ' . $_POST['comment'] . '\n';

$headers = array('Content-Type: text/html; charset=UTF-8');
 
wp_mail( $to, $subject, $body, $headers );

echo 'Done!';
wp_die();
}
<script>
jQuery(document).ready(function( $ ){
jQuery( 'form#bureau-contact' ).on( 'submit', function( e ) {
    e.preventDefault();
    
    grecaptcha.ready(function() {
        grecaptcha.execute( '6LcRmq0aAAAAACY4GHc4V-6B3w3Cy_LjUFUnkJUB', { action: 'bureau_contact' } ).then(function(token) {
            $('form#bureau-contact').prepend('<input type="hidden" name="token" value="' + token + '">');
            $('form#bureau-contact').prepend('<input type="hidden" name="action" value="bureau_contact">');
            $('form#bureau-contact').unbind('submit').submit();
            
            let form_data = jQuery( this ).serializeArray();
            
            form_data.push( { 'name' : 'security', 'value' : '<?php echo wp_create_nonce( "secure_nonce_name" ); ?>' } );
            jQuery.ajax({
                url : '<?php echo admin_url( "admin-ajax.php" ); ?>',
                type : 'post',
                data : form_data,
                success : function( response ) {
                    alert( response );
                },
                fail : function( err ) {
                    alert( "There was an error: " + err );
                }
            });
        });
    });
   return false;
});
});
</script>