Javascript 我的提交表格没有';单击“提交”按钮时,不会第一次发送,但会第二次发送
我有一个表单,我用ajax检查它的值,如果有效,然后发送到另一个页面,这里是我的Javascript 我的提交表格没有';单击“提交”按钮时,不会第一次发送,但会第二次发送,javascript,jquery,form-submit,Javascript,Jquery,Form Submit,我有一个表单,我用ajax检查它的值,如果有效,然后发送到另一个页面,这里是我的index.js $("#form").submit(function(event){ var thisForm = $(this); $(".ajaxLogo").show(); event.preventDefault(); // do some stuff $.ajax({ url: '/ajax/Check', data: data
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
s,但什么也没发生(表单未提交,页面未刷新)!但是第二次,表单发送并刷新页面。为什么?
另外,第二次我在浏览器中看不到这两个
警报。我建议您保留一个全局变量isok='',如果所有结果都是.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");
}
}
});
});
event.preventDefault();??我想在ajax验证未完成之前停止提交,然后提交,然后我必须添加event.preventDefault()代码>首先,这是错误的吗?JS可能在第一次运行后崩溃,再也没有机会运行了。根据您的代码注释,您忘记了结束括号。谢谢,我忘记了这里的括号,但括号在我的真实代码中是正确的。(我在问题中更正了这一点),因为如果我删除unbind()
,那么程序将进入循环,每次thisForm.submit()
call call self and never form submite结果值是什么——您确定它即将出现的结果。第一次单击中isOK=='1'。。如果可能,提供一些JSFIDLE演示。