2016-03-25 17 views
0

jQuery Ajax kullanarak bir form gönderiyorum.Ne zaman ve ne zaman başarılı olmaz: değer jQuery Ajax yönteminde yürütülür? (Header konum değiştirilmedi)

verileri başarıyla gönderildiğinde ama biraz problem var. Bu kodda yorumladı ifadeleri eklediğinizde, başarı: function() {} (konum değişmez) çalışmaz.

S. 1 O ifadeleri kaldırmak, bu çalışır. Bu mantığı anlamıyorum. Gerçekte ne zaman çalışır ve xy denetleme bunu nasıl etkiler? İşte

$(document).ready(function(){ 
    $("#button").click(function(){ 
    **//FOLLOWING TWO LINES MAKES SUCCESS NOT RUN** 
    //var **xy**= $("#digits").val(); 
    //if(xy!=""){ 
    $.ajax({ 
     url: "submitform.php", 
     type: "POST", 
     data: $('#signupform').serialize(),   
     success: function(result){ 
      $(location).attr('href', 'login2.php'); 
      }, 
      error: function(){ 
      alert(error); 
      } 
     }); 
    // } 
    }); 
}); 

girişi etiketi ilgilendiği:

İşte benim Ajax kod

<form id="signupform" name="form1" method="post" enctype="multipart/form-data"> 
      <input id="digits" type="text" name="phone" maxlength="10" placeholder="Enter your phone no." required /> 
...... 

S.2 I) (event.preventDefault yazarken; Gönder düğmesini varsayılan eylemi durdurmak için, çalışmayan giriş alanlarının atrributes gerektiriyordu. Neden böyle? Çözülebilir mi?

+0

: Formunuz kimlikli bir öğesi içermeyen 'yüzden' xy' hep boş olacak digits'. –

+0

Q2 hakkında: Gönder düğmesine "preventDefault" diyorsanız, varsayılan davranış (gönderimi başlatarak) engellenir, böylece giriş alanları kontrol edilmez. Bunun yerine, formun “gönder” olayını dinlemeniz ve bunun varsayılan davranışını engellemeniz gerekir; çünkü gönderilen olay, giriş öğesi kontrolünden sonra ve form gönderilmeden önce gönderilir. –

+0

Düzeltilebilir mi, yoksa farklı bir yaklaşım mı kullanmalıyım? ör. PHP veya JavaScript doğrulama? –

cevap

1

2. sorunun için: Gönderdiğiniz butonuna click durumunda için preventDefault dersek, o zaman varsayılan davranış giriş alanları kontrol edilmediği, böylece engellenmiş olur (teslim başlatarak)

.

Sen submit olay girdi elemanları kontrol edildikten sonra göndermek ve form sunulmadan önce olduğu için, yerine form ait submit olayı dinlemek ve bu varsayılan davranışını önlemek zorundayız.

$(document).ready(function() { 
    $("#signupform").on('submit', function(e) { 
    e.preventDefault(); 

    //FOLLOWING TWO LINES MAKES SUCCESS NOT RUN** 
    //var **xy**= $("#digits").val(); 
    //if(xy!=""){ 
    $.ajax({ 
     url: "submitform.php", 
     type: "POST", 
     data: $('#signupform').serialize(), 
     success: function(result) { 
     $(location).attr('href', 'login2.php'); 
     }, 
     error: function() { 
     alert(error); 
     } 
    }); 
    // } 
    }); 
}); 
+0

İyi çalışıyor. Ama burada "e" nedir? Ne alır? Lütfen açıklar mısın? –

+0

@ VikasKumar olay dinleyicisinin geri çağrısına iletilen ilk argüman olay nesnesidir. –

+0

Bir olay nesnesi nedir? –

1

kullandığınızda jquery ajax sonucu iki tür vardır:

400 - Tamam durum 402 veya 500 iç hatalardır ve bu hata işleviyle yakalama olacak başarı işlevi tarafından yakalama olmak .

Şimdi, sizin hata fonksiyonunda, mevcut olmayan bir hata değişkenini yazdırmaya çalışıyorsunuz. Eğer preventDefault kullandığınızda Ayrıca

, sen de olay çok iptal kolları değişken geçmek var. Q1 Hakkında

+0

Evet, uyarmak için değiştirdim ("hata") ve şimdi hata gösteriyor. Ama neden bu hatayı gösteriyor? –

+0

Formunuzda enctype özniteliğine sahip olduğunuzu görüyorum. Bu formda dosya yüklemeyi deniyor musunuz? –

İlgili konular