Javascript jQuery中基于ajax响应的表单提交
我使用jQuery并阻止表单的提交,然后根据ajax响应提交表单。我发现的问题是我经常要提交两次表格。第一次,它显示了加载程序,但它似乎没有调用ajax成功函数中的任何操作。如果我再次单击它,它将提交(如果已验证)。在我经历了这一切之后,它第一次似乎也起了作用。所以如果我再试一次,第一次就会成功。那么可能是缓存问题?以下是我的javascript:Javascript jQuery中基于ajax响应的表单提交,javascript,jquery,ajax,Javascript,Jquery,Ajax,我使用jQuery并阻止表单的提交,然后根据ajax响应提交表单。我发现的问题是我经常要提交两次表格。第一次,它显示了加载程序,但它似乎没有调用ajax成功函数中的任何操作。如果我再次单击它,它将提交(如果已验证)。在我经历了这一切之后,它第一次似乎也起了作用。所以如果我再试一次,第一次就会成功。那么可能是缓存问题?以下是我的javascript: $('#submit_zipcode_frm').submit(function(event){
$('#submit_zipcode_frm').submit(function(event){
event.preventDefault();
var self = this;
$(".loader img").show();
z = $('#zipcode');
if(z.val() != '' && z.val().length == 5) {
var value = z.val().replace(/^\s\s*/, '').replace(/\s\s*$/, '');
var intRegex = /^\d+$/;
if(!intRegex.test(value)) {
$(".loader img").hide();
error($(".zipcode_field"));
return false;
}
} else {
$(".loader img").hide();
error($(".zipcode_field"));
return false;
}
$.ajax({
url: "/ajax/save/zipcode",
type: 'GET',
async: false,
cache: false,
dataType: 'html',
data: {zipcode: $('.zipcode_field').val()},
success: function(data) {
if(data == 'false'){
$(".loader img").hide();
error($(".zipcode_field"));
return false;
}else{
self.submit();
getList();
}
}
});
});
下面是标记:
<form id="submit_zipcode_frm" class="submit_zipcode" method="post" action="/go" target="_blank">
<div class="zipcode_container">
<span class="loader">
<img src="/assets/img/loader.gif" style="display: none;"/>
</span>
<input type="text" class="zip_input zipcode_field ghost" id="zipcode" name="zipcode" value="Enter your Zip"/>
<div class="start_btn">
<button type="submit">Submit</button>
</div>
<div class="clear"></div>
</div>
<div class="clear"></div>
</form>
提交
如果您有任何建议或想法,我们将不胜感激。谢谢大家!
编辑:
这里仅澄清以下步骤:
self.submit()
是否导致再次调用您的提交处理程序?@paugrime No,formNode.submit()
将绕过任何jQuery绑定事件。但是,不久前返回false没有任何作用,这是问题的根源。self.submit()
是否会导致再次调用提交处理程序?@paugrime No,formNode.submit()
将绕过任何jQuery绑定事件。然而,之前不久返回false没有任何作用,这是问题的根源。