Я хотел бы поделиться подробным способом публикации с PHP + Ajax вместе с ошибками, отброшенными на отказ.
Прежде всего, создайте два файла, например form.php
и process.php
.
Сначала мы создадим файл form
, который будет отправлен с использованием метода jQuery
.ajax()
. Остальные будут объяснены в комментариях.
form.php
Подтвердить форму с помощью проверки и передачи на стороне клиента jQuery данные в process.php
.
$(document).ready(function() {
$('form').submit(function(event) { //Trigger on form submit
$('#name + .throw_error').empty(); //Clear the messages first
$('#success').empty();
//Validate fields if required using jQuery
var postForm = { //Fetch form data
'name' : $('input[name=name]').val() //Store name fields value
};
$.ajax({ //Process the form using $.ajax()
type : 'POST', //Method type
url : 'process.php', //Your form processing file URL
data : postForm, //Forms name
dataType : 'json',
success : function(data) {
if (!data.success) { //If fails
if (data.errors.name) { //Returned if any error from process.php
$('.throw_error').fadeIn(1000).html(data.errors.name); //Throw relevant error
}
}
else {
$('#success').fadeIn(1000).append('' + data.posted + '
'); //If successful, than throw a success message
}
}
});
event.preventDefault(); //Prevent the default submit
});
});
Теперь мы посмотрим на process.php
$errors = array(); //To store errors
$form_data = array(); //Pass back the data to `form.php`
/* Validate the form on the server side */
if (empty($_POST['name'])) { //Name cannot be empty
$errors['name'] = 'Name cannot be blank';
}
if (!empty($errors)) { //If errors in validation
$form_data['success'] = false;
$form_data['errors'] = $errors;
}
else { //If not, process the form, and return true on success
$form_data['success'] = true;
$form_data['posted'] = 'Data Was Posted Successfully';
}
//Return the data back to form.php
echo json_encode($form_data);
Файлы проекта можно загрузить с http://projects.decodingweb.com/simple_ajax_form.zip.