2016-04-08 24 views
0

Verileri doğrulamak ve form gönderilmeden önce değerleri $ _SESSION değişkeninde saklamak istediğim bir form var. Şimdiye kadar, doğrulama başarısız olursa kodum yanlış döner, ancak AJAX tamamlanmadan önce formu gönderir. O biraz nasıl emin değilim:JQuery/AJAX - ajax çözümlendikten sonra formu gönder

$('#c_form').submit(function() { 
    if ($("#del_f").val().length == 0) { 
     $("#del_f").addClass("alert-danger"); 
     $("#del_f").focus(); 
     return false; 
    } else { 
     $("#del_f").removeClass("alert-danger"); 
    } 
    if ($("#del_s").val().length == 0) { 
     $("#del_s").addClass("alert-danger"); 
     $("#del_s").focus(); 
     return false; 
    } else { 
     $("#del_s").removeClass("alert-danger"); 
    } 
    var update_session_delivery = "n=" + $("#del_f").val() + " " + $("#del_s").val(); 
    var ajax1 = $.ajax({ 
     url: 'work/update_session_delivery.php', 
     type: 'post', 
     data: update_session_delivery, 
     success: function(result) {} 
    }); 

    $.when(ajax1).done(
     function() { 
      //submit the form? 
     } 
    ) 
}); 
+1

bunu istediğini yapmak mümkün değildir yaptık yolu. Ajax'inizin "başarılı" kısmında "$ ('# c_form'). BTW, 'başarı 'yerine' .done 'kullanmalısınız. Ama bu sadece bir döngüye sebep olur, formun sunulmasını engelleyemez, ajax tamamlanana kadar erteleyemez ve sonra göndermeye devam edemezsiniz. Yapmanız gereken şey, kullanıcının ajax'ı tetiklemek için formun dışına tıklaması ve ardından ajax'ın '.done 'kısmında formu göndermesi için bir düğmeye sahip olmasıdır. – Styphon

+0

Mükemmel. Bunu neden düşünmediğimin hiçbir fikrim yok. Teşekkürler – Lee

+0

Neden bu şekilde yapmak istersiniz? ihtiyacın ne? – itzmukeshy7

cevap

0

deneyin e.preventDefault:

$('#c_form').submit(function(e) { 
     e.preventDefault();//prevent form from submiting 
     var form = $(this); 
     if ($("#del_f").val().length == 0) { 
      $("#del_f").addClass("alert-danger"); 
      $("#del_f").focus(); 
      return false; 
     } else { 
      $("#del_f").removeClass("alert-danger"); 
     } 
     if ($("#del_s").val().length == 0) { 
      $("#del_s").addClass("alert-danger"); 
      $("#del_s").focus(); 
      return false; 
     } else { 
      $("#del_s").removeClass("alert-danger"); 
     } 
     var update_session_delivery = "n=" + $("#del_f").val() + " " + $("#del_s").val(); 
     var ajax1 = $.ajax({ 
      url: 'work/update_session_delivery.php', 
      type: 'post', 
      data: update_session_delivery, 
      success: function(result) { 
        //aditional logic here 
       form.submit();//submit the form after success 
      } 
     }); 


    }); 
İlgili konular