Javascript Ajax表单提交行为
我有一个奇怪的Ajax问题(我不是很擅长,所以所有的问题都是奇怪的…) 我有一个表单需要大量的验证(涉及到大文件),所以我决定实现一个小的Ajax方法,在用户等待时进行验证。 问题是,虽然正确地进行了Ajax调用,但我无法在验证完成后将表单发布到正确的php文件中 表格如下所示Javascript Ajax表单提交行为,javascript,php,ajax,Javascript,Php,Ajax,我有一个奇怪的Ajax问题(我不是很擅长,所以所有的问题都是奇怪的…) 我有一个表单需要大量的验证(涉及到大文件),所以我决定实现一个小的Ajax方法,在用户等待时进行验证。 问题是,虽然正确地进行了Ajax调用,但我无法在验证完成后将表单发布到正确的php文件中 表格如下所示 <form id="initialForm" method="post" action="/files/processing.php"> ... <input id="saveForm" cla
<form id="initialForm" method="post" action="/files/processing.php">
...
<input id="saveForm" class="button_text" type="submit" name="submit" value="Submit"/>
</form>
将errorMessages
JSON对象中包含的消息记录到控制台后,表单不会提交到“files/processing.php”。
我相信这是件小事,但我无法让它发挥作用
谢谢大家 您已阻止表单的初始提交。因此,您必须在记录错误后提交它
$(function() {
var request;
$("#initialForm").submit(function(e) {
e.preventDefault();
var validated = false;
//flush pending requests
if (request){request.abort;}
$.ajax({
url: 'test.php',
method: 'POST',
data: $('#initialForm').serialize()
}).done(function (response) {
var errorMessages = JSON.parse(response);
console.log(errorMessages['errorTest']);
if(checkErrorMessages()) { //validate fields
$('#initialForm').unbind('submit'); //unbind submit if valid
$('#saveForm').click(); //submit form
}
}).fail(function () {
});
});
});
编辑:只有在表单验证成功时,才能解除提交事件的绑定,否则不能解除绑定。您可以使用.success()或.done()函数(两者的作用相同)。但最好使用done(),因为success()可能会从中被弃用。我已经相应地更新了上面的代码。谢谢rahki4110。我已经尝试过了,但它会导致无限的提交循环。有什么想法吗?是的。对不起,我忽略了。更新了答案。为rahki4110干杯!ajax和javascript是我确信永远不会得到的东西之一。rahki4110,我现在已经编辑了代码(这篇文章也是),并添加了我所需的其他功能。但是,如果检查失败一次,则单击“提交”按钮提交表单而不进行任何进一步检查。有什么想法吗?我尝试在不同阶段解除提交事件的绑定,但没有成功。@horacv:相应地编辑了答案。
$(function() {
var request;
$("#initialForm").submit(function(e) {
e.preventDefault();
var validated = false;
//flush pending requests
if (request){request.abort;}
$.ajax({
url: 'test.php',
method: 'POST',
data: $('#initialForm').serialize()
}).done(function (response) {
var errorMessages = JSON.parse(response);
console.log(errorMessages['errorTest']);
if(checkErrorMessages()) { //validate fields
$('#initialForm').unbind('submit'); //unbind submit if valid
$('#saveForm').click(); //submit form
}
}).fail(function () {
});
});
});