我有一个表单,我用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
。
答案 0 :(得分:0)
我建议你保留一个全局变量isok ='',如果所有result.isok =“1”,则不要执行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");
}
}
});
});