400 BAD REQUEST. (Ajax Wordpress)

Читал по инструкциям, примерам и похожим запросам и всё равно ошибка остаётся.

Сервер локальный.

HTML:

<form action=""  method="POST" id="form">
    <input type="text" name="dragon">
    <input type="submit" value="submit">
</form>

JS:

$("#form").on('submit', function(){
  var data = {
    val: $('#form input').val() ,
    action: 'udapte_data'
  } 

  $.ajax({
    url: '/wp-admin/admin-ajax.php',
    type: 'POST',
    contentType: 'application/json',
    dataType: 'json',
    data: JSON.stringify(data), 
  }) 
})

PHP:

add_action( 'wp_ajax_udapte_data', 'udapte_data' ); 
 
function udapte_data(){
    update_user_meta(1, 'dragon', $_POST('dragon'));
 
    die; 
}

Ответы (1 шт):

Автор решения: Алексей

Не переопределяйте contentType

JS:

jQuery("#form").on('submit', function (event) {

     event.preventDefault();

     var data = {
         action: 'udapte_data',
         val: jQuery('#form input').val()
     }

     jQuery.ajax({
         url: '<?php echo admin_url('admin-ajax.php'); ?>',
         type: 'POST',
         data: data,
     })
})

PHP:

add_action( 'wp_ajax_udapte_data', 'udapte_data_cb' );
add_action( 'wp_ajax_nopriv_udapte_data', 'udapte_data_cb' );

function udapte_data_cb(){
    update_user_meta(1, 'dragon', $_POST['val']);
 
    die(); 
}

Либо если хотите отправлять JSON, вручную обрабатывайте данные на стороне сервера. Тут можно почитать ответы по этой теме тема1 тема2

→ Ссылка