我正在使用jquery表单插件向服务器提交数据。在提交之前,我正在通过ajax运行服务器端验证。所以结构是
function validateForm(formData, jqForm, options){
var check = true; //have to set check to false to avoid form submit
....
looping through form elements and putting values in to data array here
....
function sendData(callback){
$.ajax({
url:'validate.php',
data:data,
dataType:'json',
//async:false, if I uncomment this, code works as I want
success:callback
});
}
function processForm(response){
$.each(response,function(i,res){
//if validation is fail I'm setting check = false here
});
}
sendData(processForm);
return check;
})
由于我看到将async设置为false不是好习惯,如何使用回调将check值设置为false?
答案 0 :(得分:0)
不要尝试返回数据。做任何工作需要做的回调(或你从它调用的函数)。
答案 1 :(得分:0)
你见过jQuery .submit()
函数吗?您可以通过致电.preventDefault()
取消验证失败的提交。
示例jQuery:
<script>
$("form").submit(function() {
if ($("input:first").val() == "correct") {
$("span").text("Validated...").show();
return true;
}
$("span").text("Not valid!").show().fadeOut(1000);
return false;
});
</script>
您可以分两个阶段进行验证和提交 - 先验证,然后在OnAJAXSuccess
处理程序中使用提交。