Сериализация вашей формы в виде массива.Затем передайте его в Ajax-запросе.
На стороне клиента:
jQuery(document).ready(function($) {
var form = $('#minForm');
$(form).submit(function(event) {
event.preventDefault();
var formData = $(form).serializeArray();
$.ajax({
type: "POST",
url: '/wp-admin/admin-ajax.php',
dataType: 'json',
data: {
action : 'my_ajax_action',
formData : formData,
},
success:function(data) {
console.log(data);
},
});
});
});
На стороне сервера:
add_action( 'wp_ajax_my_ajax_action', 'my_ajax_action_callback' );
function my_ajax_action_callback(){
$response = ["success" => true];
$form_data = json_decode($_POST['formData']);
error_log(print_r($form_data, 1)); // Log to see the array properties.
if (empty($form_data) {
$response["success"] = false;
}
echo json_encode($response);
//wp_die(); // required. to end AJAX request.
}
Примечание: $(form).serializeArray()
дастВы представляете форму как массив из объектов , и это может быть не то, что вы ожидаете на стороне сервера для извлечения данных.Вы можете обработать массив форм перед отправкой на сервер, преобразовав его в простой объект :
var formData = $(form).serializeArray().reduce(function(obj,item){
obj[item.key] = item.value;
return obj;
}, {});