для простой контактной формы в качестве плагина WordPress, я создал форму в виде всплывающего окна на той же странице:
<form method="post" id="w_form" enctype="multipart/form-data">
<label for="first_name" class="text-secondary">First Name</label>
<input id="first_name" type="text" name="first_name" form-control" value="" required="">
<label for="last_name" class="text-secondary">Last Name</label>
<input id="last_name" type="text" name="last_name" form-control" value="" required="">
<button class="btn btn-danger" id="submit" type="submit" value="Submit" name="submit">
Submit
</button>
</form>
, и его данные будут отправлены на сервер ajax:
$("#w_form").submit( function(event) {
event.preventDefault();
$.ajax({
type: "post",
data: new FormData(this),
dataType: 'json',
contentType: false,
cache: false,
processData: false,
beforeSend: function() {
$('#submit').attr("disabled", "disabled");
},
success: function( response ) {
alert( response );
// if ( response.status == 1 ) {
// $('#w_form')[0].reset();
// }
},
error: function (xhr, error) {
console.debug(xhr);
console.debug(error);
},
});
});
, который переходит к php коду на той же странице и в верхней части формы:
if ( isset( $_POST['first_name'] ) ) {
$uploaded_status;
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$to = 'abc@example.com';
$subject = 'test';
$body = 'body';
if ( wp_mail( $to, $subject, $body, '') ) {
$uploaded_status = 1;
} else {
$uploaded_status = 0;
}
if ( $uploaded_status == 1 ) {
$response = array();
$response['status'] = 1;
$response['message'] = 'Your form submitted successfully!';
header("Content-Type: application/json; charset=utf-8", true);
echo json_encode($response);
}
}
этот процесс работает правильно и отправляет данные формы по электронной почте на адрес электронной почты, но данные ответа как :success
часть ajax, получает html содержимое вместо json и возвращает parsererror
как console.debug(error);
, поэтому, как я уже говорил, отправка и отправка данных в виде электронной почты работает правильно, но У меня нет правильных данных для процесса ответа для управления пользовательским интерфейсом после отправки кнопки