получить значение из ответа jquery ajax без установки асинхронного false - PullRequest
1 голос
/ 15 мая 2011

Я использую плагин формы 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;

})

Поскольку я видел, что установка асинхронного режима в значение false не является хорошей практикой, как я могу установить значение проверки в false с помощью обратных вызовов?

Ответы [ 2 ]

0 голосов
/ 15 мая 2011

Вы видели функцию 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>

Вы можете выполнить проверку и отправку в два этапа - сначала выполнить проверку, а затем использовать submit в обработчике OnAJAXSuccess.

0 голосов
/ 15 мая 2011

Не пытайтесь вернуть данные. Делайте все, что нужно, для выполнения внутри обратного вызова (или в функциях, которые вы вызываете из него).

...