1

我正在使用 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 不是一个好习惯,如何使用回调将检查值设置为 false?

4

2 回答 2

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

于 2011-05-15T07:51:41.930 回答
0

不要试图返回数据。在回调中(或在您从中调用的函数中)做任何需要做的工作。

于 2011-05-15T07:28:18.707 回答