#javascript #node.js
#javascript #node.js
Вопрос:
У меня есть форма регистрации, которая получает ошибки со стороны сервера, такие как HTTP code 400 (неверный запрос), если поле отсутствует.
Возможно, не требуется, но вот код:
HTML
<div class="row">
<div class="col-md-4 col-md-offset-4">
<h1 class="text-center">SIGNUP</h1>
<div class="well">
<form role="form" id="signup_form">
<div class="form-group">
<input type="text" class="form-control" id="signup_name" name="fullName" placeholder="Full Name">
</div>
<div class="form-group">
<input type="email" class="form-control" id="signup_email" name="username" placeholder="Enter email">
</div>
<div class="form-group">
<input type="password" class="form-control" id="signup_password" name="password" placeholder="Password">
</div>
<button type="submit" class="btn btn-default btn-block">Signup</button>
<div id="signup_error_message" class="alert alert-danger"></div>
<div id="signup_processing_message" class="alert alert-success">Processing...</div>
</form>
</div>
<p class="help-block text-center"><span class="glyphicon glyphicon-lock"></span> SSL Secure</p>
</div>
</div>
JS
$('#signup_form').submit(function (event) {
$('#signup_processing_message').show();
event.preventDefault();
var fieldValues = getFormObj('signup_form');
$.ajax({
type: 'post',
url: '/signup/local',
data: fieldValues,
success: function (response, textStatus, xhr) {
if (xhr.readyState === 4 amp;amp; xhr.status === 0) {
alert('Aborted. Network issue.');
} else if (response.message === 'success') {
if ($('#signup_error_message').is(':visible')) {
$('#signup_error_message').hide();
}
$('#signup_processing_message').html('Success');
setTimeout(function (){ window.location.href = '/'; }, 500);
} else {
// Could this ever happen?
}
},
error: function (response) {
console.log(response);
if ($('#signup_processing_message').is(':visible')) {
$('#signup_processing_message').hide();
}
if (response.status === 400) {
$('#signup_error_message').html('Please fill in the fields correctly.');
} else {
$('#signup_error_message').html('Please fill in the fields correctly.');
}
$('#signup_error_message').show();
}
});
});
// For forms - signup, login etc. Returns an obj with the name and value of each field in the form.
function getFormObj(formId) {
var formObj = {};
var inputs = $('#' formId).serializeArray();
$.each(inputs, function (i, input) {
formObj[input.name] = input.value;
});
return formObj;
};
Что касается серверной части, если введенная информация в порядке, форма будет выполнена успешно, иначе она может вернуть что-то вроде: http://screencast.com/t/sS5Vmar0Jk
Функция ошибки в $.ajax не обнаруживает эту ошибку HTTP. Однако, когда я перезапускаю сервер узла, ошибка обнаруживается и console.log(response)
т.д. выполняются.
Есть идеи?
Комментарии:
1. Какой у вас код на стороне сервера? Вы завершаете свой ответ? В частности, часть обработки ошибок.
Ответ №1:
попробуйте использовать
$.ajax({
...
data: JSON.stringify(fieldValues),
...