Я использую jquery, чтобы нажать контроллер пружины и на основе сообщения ответа контроллера, чтобы конечный пользователь на странице входа. Здесь я занимаюсь только при неудаче входа. Я хочу показать сообщение пользователю, что логин завершился неудачно. Я пишу код ajax.
Странно, этот код ajax отлично работает для браузера crome, но не работает в случае пожарной лисы. Может ли любой орган сказать мне, что мне нужно для достижения такой же функциональности. Таким образом, он становится независимым от браузера.
Код ajax здесь
<script type="text/javascript">
function doAjaxPost() {
// get the form values
$.ajax({
type: "POST",
url: $("#login-form").attr("action"),
success: function(response){
$('#sign-up').html(response);
},
error: function(e){
alert('Error: ' + e);
}
});
event.preventDefault();
}
</script>
Код контроллера Spring находится здесь:
@RequestMapping(value = "/sign-in", method = RequestMethod.POST)
public @ResponseBody String submitCustSignInForm(@ModelAttribute("model") Person model,
HttpSession sess) {
String response = "";
Person person = null;
if (sess.getAttribute("USER_INFO") == null) {
person = tsService.login(model);
if (person == null) {
response = "User name or password does not match.";
} else {
response = "success";
sess.setAttribute("USER_INFO", person);
}
}
return response;
}
В обоих случаях запрос ajax попадает в контроллер, но в случае crome он остается на той же странице и отображает сообщение об ошибке. Но в случае firefox он перемещается на другую пустую страницу, а затем печатает сообщение.
То, о чем я думал, может быть в случае с firefox "event.preventDefault();" не может остановить действие формы
Форма html находится здесь:
<form class="aui login-form"
method="post" id="login-form" onsubmit="doAjaxPost()">
</form>
Код формы немного длиннее, поэтому не указывается весь код.
Вы смешиваете обработчик представления формы в стиле jQuery с ванильным html onsubmit(). Попробуйте изменить:
event.preventDefault();
к
return false;
В качестве альтернативы вы можете удалить onsubmit in для тега формы, связать прослушиватель с событием отправки в форме и использовать event.preventDefault().