没有ajax的时候,AJAX的错误发送形式没有Ajax

这篇博客探讨了在使用jQuery处理表单验证和AJAX提交时遇到的问题。作者发现表单在未通过验证的情况下仍被发送,导致多次提交。通过调整代码,特别是`submitHandler`函数内的逻辑,尝试避免了这种情况。当AJAX请求失败时,表单改为通过传统方式提交。目前的问题是,即使表单未完成验证,也会触发AJAX提交。解决方案可能涉及更深入的错误处理和验证流程的改进。
摘要由CSDN通过智能技术生成

$("#contactform").validate({

rules: {

// ...

},

submitHandler: function(form) {

var postData = $(form).serializeArray();

var formURL = $(form).attr("action");

$.ajax({

url : formURL+'validate',

type: "POST",

data : postData,

success: function(data, textStatus, jqXHR)

{

$.ajax({

url : formURL,

type: "POST",

data : postData,

beforeSend: function(){

// ...

},

success:function(data, textStatus, jqXHR)

{

// ...

},

error: function(jqXHR, exception)

{

$(form).submit();

},

complete: function(){

// ...

}

});

},

error: function(jqXHR, exception)

{

$(form).submit();

}

});

}

});

在2个地方我有$(form).submit(); - 我想在这个地方提交应更改为后发送的形式不使用AJAX(URL一个在行为属性中的形式)。

在好像数据正在使用AJAX发送的时刻 - 当我添加警报发送$(form).submit();警报正在显示一个又一个(我准备PHP脚本返回不正确的数据)

*编辑*

变更后我的代码是:

我开始形式

我的完整AJAX代码:

$("#contactform").validate({

rules: {

content_{{ hash_tag }}: {

required: true,

minlength: 20

},

name_{{ hash_tag }}: {

required: true,

minlength: 2

},

subject_{{ hash_tag }}: {

required: true,

minlength: 10

},

email_{{ hash_tag }}: {

required: true,

email: true

}

},

submitHandler: function(form) {

}

});

function formAjaxSubmit(form) {

var postData = $(form).serializeArray();

var formURL = $(form).attr("action");

$.ajax({

url : formURL+'validate',

type: "POST",

data : postData,

success: function(data, textStatus, jqXHR)

{

$.ajax({

url : formURL,

type: "POST",

data : postData,

beforeSend: function(){

if(data.valid == 1) {

$(form).hide();

$("#formsending").show();

}

},

success:function(data, textStatus, jqXHR)

{

$('#articlecontent').html(data.content);

$("html, body").animate({ scrollTop: 0 });

return false;

},

error: function(jqXHR, exception)

{

return true;

},

complete: function(){

if(data.valid == 1) {

$("#formsending").hide();

$(form).show();

}

}

});

},

error: function(jqXHR, exception)

{

return true;

}

});

}

但是现在我遇到了使用jQuery验证字段的问题。当我点击提交,即使表单没有完成时,表单也会通过AJAX发送,即使jQuery验证完成,也只是在显示PHP验证结果之后。如果我从形式和submitHandler删除onsubmit我:

formAjaxSubmit(form);

一切似乎很好地工作。

+0

你的表单代码在哪里?我怀疑它进入一个循环:你提交(submitHandler通过ajax发送),onError - 表单重新提交(submitHandler通过Ajax发送,错误再次发生,onError - 表单重新提交(submitHandler通过Ajax发送)等 –

+0

我的表单是标准的HTML形式,没什么特别的,我知道这是通过AJAX发送的,所以我问是否有可能重新发送错误的表单,而不是使用AJAX,对于没有表单的标准AJAX错误(加载页面内容),我可以简单地使用'window.location .href = url;'重新加载页面不使用AJAX –

+0

在下面的答案中看到我的解决方案。它试图做ajax提交,如果ajax失败,你返回true,迫使表单通过传统方法提交 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值