Ik heb een eigen knop, die ik gebruik om de verborgen <input type='file'> te triggeren:
Waarom, omdat de default file type knop enorm lelijk is.
De html:
<form id="imageUploadForm" action="<?=HTML_ROOT.'inc/editphotoAjax.php'?>" enctype="multipart/form-data" >
<input type="file" name="plaatje" id="newfotoReal" style="display:none"/>
<input type="hidden" name="actie" value="add"/>
<input type="hidden" name="seo_title" value="<?=$seo_title?>" />
<input type="hidden" name="soort" value="fotoedit"/>
</form>
$(document).delegate('#newfoto', 'click', function(t){
$("#newfotoReal").trigger('click');
})Hierboven is de trigger zodat ik een bestand kan selecteren, een plaatje in dit geval.
Vervolgens als het plaatje geselecteerd is gebruik ik:
$(document).on('change', '#newfotoReal', function() {
$("#imageUploadForm").submit();
});
Vervolgens word de werkelijke normale submit geannuleerd, zodat je op dezelfde pagina blijft, met ajax word dit zo gedaan:
$('#imageUploadForm').on('submit',(function(e) {
e.preventDefault();
var formData = new FormData(this);
$(".loading-div").show();
$.ajax({
type:'POST',
url: $(this).attr('action'),
data:formData,
cache:false,
contentType: false,
processData: false,
success:function(data){
console.log("success");
console.log(data);
if (data!=="")
{
message = '<div style="padding-top: 10px" ><span id="popmessage">'+data+'</span><br><br></div>';
$('.popup').html(message);
$('.overlay').show();
$('.popup').show();
$('.popup').center();
$(window).resize(function(){
$('.popup').center();
});
$(".loading-div").hide();
fotoref();
}
},
error: function(data){
console.log("error");
console.log(data);
}
});
}));Dit werkt verder de eerste keer, maar de tweede keer, gaat hij gewoon de normale submit doorvoeren en dan gaat hij ook daadwerkelijk naar:
http://mijndomein.nl/editphotoAjax.php?plaatje=1.jpg&actie=add&titelteksttogether&soort=fotoedit
Hoe kan ik dit altijd laten werken? en niet alleen de eerste keer?
bedankt
Daniek