从jquery ajax响应中获取值而不设置async false

时间:2011-05-15 07:20:16

标签: jquery ajax asynchronous jquery-forms-plugin

我正在使用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?

2 个答案:

答案 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处理程序中使用提交。