我的ajax代码如下所示:
$("#form").submit(function(event){
var $form = $(this);
var serializedData = $form.serialize();
var $inputs = $form.find("input, select, button, textarea");
request = $.ajax({
url: "/blog/ajaxphp/registration_check.php",
type: "post",
data: {formData:serializedData},
datetype: "JSON"
});
request.done(function (response, textStatus, jqXHR){
if(jQuery.parseJSON(response).success==undefined){
$form.unbind('submit');
$form.submit();
}
});
request.fail(function (jqXHR, textStatus, errorThrown){
});
event.preventDefault();
});
问题:
我需要单击提交按钮两次,否则此表单未提交。
我尝试使用return false而不是preventdefault
,并尝试$form.unbind('submit');
但没有工作。
如何通过单击
使提交按钮工作答案 0 :(得分:1)
在request.done事件中,如果未定义成功,则返回true。您可以考虑在未定义成功时取消绑定并重新提交表单,或者将所有部分一起删除,只显示一条消息,表明该表单无法提交并应再次尝试。值得一试的是,简化过程是否会产生您想要的结果。
我也会删除event.preventDefault();并在request.fail事件中返回false。
我假设你正在做这一切,因为你不想在ajax调用完成之前提交表单,所以你可能想尝试在$ .ajax请求中添加async:false:
$("#form").submit(function(event){
var $form = $(this);
var serializedData = $form.serialize();
var $inputs = $form.find("input, select, button, textarea");
request = $.ajax({
url: "/blog/ajaxphp/registration_check.php",
type: "post",
data: {formData:serializedData},
async: false,
datetype: "JSON"
});
request.done(function (response, textStatus, jqXHR){
if(jQuery.parseJSON(response).success==undefined){
$form.unbind('submit');
$form.submit();
}
else
{
return true;
}
});
request.fail(function (jqXHR, textStatus, errorThrown){
return false;
});
});