0
我有一個註冊表單,它從服務器端收到錯誤,如HTTP代碼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 && 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中的ction沒有檢測到HTTP錯誤。但是,當我重新啓動節點服務器時,會檢測到錯誤,並運行console.log(response)
等。
有什麼想法?
什麼是你的服務器端代碼試試?你結束了你的迴應?特別是錯誤處理部分。 – Zlatko