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?
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?
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!');
}
});
Teşekkür ederim Rory, işe yarar, ancak sayfanın –
'window.location.reload()' ifadesinden sonra yeniden yüklenmesini istiyorum. Her ne kadar bu AJAX isteği oldukça güzel bir istek yapar. –
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");
}
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. –
"Dosya" alanını denetlemiyorsunuz. – TheValyreanGroup
TheValyreanGroup bunu tamamladı, ancak sayfa hala yeniden yüklenmiyor –