我正在尝试使用AJAX调用验证表单以检查可用库存。如果库存检查有错误,则返回一个消息,否则表格应该提交。
我有以下代码:
$("form[id*='distributor_']").submit(function(){
return checkAvailableInventory($(this));
});
function checkAvailableInventory(form) {
$.ajax({
url: "/ajax/quantity.php?" + form.serialize(),
success: function(msg) {
if (msg) {
alert(msg);
return false;
} else {
return true;
}
}
});
}
我怀疑这个问题是由于AJAX的异步特性而发生的,并且在checkAvailableInventory()生命周期完成之后,success:子句才会触发。
有没有人有解决此问题的建议?我已经看到一些人使用超时的例子,但这似乎是一个可能出现问题的解决方法。
答案 0 :(得分:2)
一种选择是使呼叫非异步。您可以将async
proprety设置为false。默认情况下是这样。不确定呼叫有多长,因为它可以锁定浏览器直到完成。
编辑:另一种选择是从进行ajax调用的方法返回false。然后在成功方法中,当它到达那里时你可以解除表单中的提交功能,然后只需调用form.submit,它就会发布到没有验证的正常位置。
答案 1 :(得分:0)
您可能想查看jQuery验证插件!它使用起来非常简单,并且非常好地处理远程验证。
插件:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ 有关远程验证的文档:http://docs.jquery.com/Plugins/Validation/Methods/remote#options