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>

検証と送信を 2 つのフェーズで行うことができます。最初に検証してから、OnAJAXSuccessハンドラーで送信を使用します。

于 2011-05-15T07:51:41.930 に答える
0

データを返そうとしないでください。コールバック内 (またはコールバックから呼び出す関数内) で必要な作業を行います。

于 2011-05-15T07:28:18.707 に答える