2016-11-01 26 views
5

Yani böyle bir formu var boşsaKontrol FormData

Yine de hiçbir dosya seçilmeden gönderilebiliyorum ve ajax artık sayfayı yeniden yüklemiyor. Herhangi bir öneri ne yapabilirim?

+0

Kısa yanıt, güvenilir bir şekilde olamaz. Daha uzun cevap: Chrome ve Firefox'ta bilgi almak için 'FormData.entries()' işlevini kullanabilirsiniz, ancak bunlar daha eski tarayıcılarda ve kesinlikle IE'de desteklenmez. Alternatif, form öğelerini doğrudan doğrulamaktır. Ayrıca, "async: false" işlevini kullanmak için son derece kötü bir uygulama olarak kaldırmanız gerektiğini unutmayın. –

+0

"Dosya" alanını denetlemiyorsunuz. – TheValyreanGroup

+0

TheValyreanGroup bunu tamamladı, ancak sayfa hala yeniden yüklenmiyor –

cevap

4

Kısa yanıt, FormData'un (orijinal sorunuzun sorduğu gibi) bilgi içerdiğini güvenilir bir şekilde kontrol edemezsiniz.

Chrome ve Firefox'ta bilgi almak için FormData.entries() kullanabilirsiniz, ancak bunlar daha eski tarayıcılarda desteklenmez ve kesinlikle IE'de yoktur.

Alternatif olarak, form öğelerini doğru olarak - yaptığınız gibi - doğrulamak için file girişini kaçırdınız. Ayrıca kullanmak için inanılmaz derecede kötü bir uygulama olarak async: false kaldırmanız gerektiğini unutmayın.

kontrol kodunuzu düzeltmek için if durumda file girişinin val():

$('#uploadimage').on('submit', function(e) { 
    e.preventDefault(); 
    var name = $('#numprod').val().trim(); 
    var pret = $('#pretprod').val().trim(); 
    var file = $('input[type="file"]').val().trim(); // consider giving this an id too 

    if (name && pret && file) { 
     $.ajax({ 
      url: 'connect.php', 
      type: 'POST', 
      data: new FormData(this), 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function(){ 
       alert('uploaded successuflly!'); 
      } 
     }); 
    } else { 
     alert('input fields cannot be left empty you num num!'); 
    } 
}); 
+0

Teşekkür ederim Rory, işe yarar, ancak sayfanın –

+0

'window.location.reload()' ifadesinden sonra yeniden yüklenmesini istiyorum. Her ne kadar bu AJAX isteği oldukça güzel bir istek yapar. –

1

tipi dosyasının girişine bir kimliği ekleyin ve aşağıda snippet'iyle dosyalarına sahip olmadığını kontrol:

if(document.getElementById("file").files.length == 0){ 
    console.log("no files selected"); 
} 
İlgili konular