У меня есть форма, в которой я проверяю ее значения с помощью ajax, и если она действительна, то отправьте на другую страницу, вот мой index.js
$("#form").submit(function(event){
var thisForm = $(this);
$(".ajaxLogo").show();
event.preventDefault();
// do some stuff
$.ajax({
url: '/ajax/Check',
data: data,
dataType: 'json',
success:function(result){
// ....
// check some situations that if form is not valid don't send the form
// ....
if(result.isOK=='1'){
alert("I am before this line");
thisForm.unbind('submit').submit(); // send request to '/'
alert("I am after that line");
}
}
});
});
Моя проблема возникает при загрузке страницы. В первый раз, когда я нажимаю кнопку отправки, я вижу два alert
в браузере, но ничего не происходит (форма не отправляется, а страница не обновляется)! Однако во второй раз, форма отправляет и обновляет страницу. Зачем?
Кроме того, во второй раз я не вижу два alert
в браузере.
Я предлагаю, чтобы u сохранял глобальный var isok = '', и если все result.isok = "1", чем donot do e.preventDefault() ;. Его нечеткий способ, но может решить проблему для продолжения отправки формы до тех пор, пока проверка ajax не будет выполнена без серьезных изменений кода.
var isok ='';
$("#form").submit(function(event){
var thisForm = $(this);
$(".ajaxLogo").show();
if(isok != '1')
event.preventDefault();
// do some stuff
$.ajax({
url: '/ajax/Check',
data: data,
dataType: 'json',
success:function(result){
// ....
// check some situations that if form is not valid don't send the form
// ....
if(result.isOK=='1'){
isok='1';
alert("I am before this line");
thisForm.unbind('submit').submit(); // send request to '/'
alert("I am after that line");
}
}
});
});
event.preventDefault();
во первых это неправильно?