gpt4 book ai didi

jquery - 表单 OnSubmit 等待 jQuery Ajax 返回?

转载 作者:行者123 更新时间:2023-12-01 03:17:07 24 4
gpt4 key购买 nike

我想在表单 onsubmit 上触发 $.ajax 并仅在 Ajax 返回有效后返回 true

例如:

<form id="myForm" onsubmit="return ajaxValidation();">
<input id="myString" name="myString" type="text" />
<input type="submit" value="Submit" />
</form>

在 JavaScript 中:

function ajaxValidation() {
$.ajax({
async: false,
type: "POST",
url: "ajax.php",
data: { myString: $("#myString").val() }
}).success(function( response ) {
alert(response); //Got 'ok'
if (response=="ok") {
return true; //mark-1
} else {
alert("Oh, string is wrong. Form Submit is cancelled.");
}
});
return false; //mark-2
}

当我提交时,我收到警报ok,但它返回“false”,因为它跳转到最后的return false行。

为什么?我无法理解。实际上,它应该命中 return true 行。 (而且,即使在 返回 true之后,该函数也应该停在那里并直接退出)

所以现在意味着,父函数不会等待 Ajax Return。相反,它是不断地跑到终点。请知道为什么。如何让父函数等待Ajax?

最佳答案

由于 AJAX 是异步的,因此使用提交按钮上的点击处理程序可以更好地进行验证。

以下内容基于删除内联 onSubmit

$(function() {

var $form = $('#myForm');

$form.find('input[type="submit"]').click(function() {
$.ajax({
/* async: false, this is deprecated*/
type: "POST",
url: "ajax.php",
data: {
myString: $("#myString").val()
}
}).success(function(response) {
alert(response); //Got 'ok'
if(response == "ok") {
/* submit the form*/
$form.submit();
} else {
alert("Oh, string is wrong. Form Submit is cancelled.");
}
}); /* prevent default when submit button clicked*/
return false;

});
});

关于jquery - 表单 OnSubmit 等待 jQuery Ajax 返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14541325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com