Ich habe eine Form, die für das Senden von mails.It ist Felder enthalten wie to_name,subject,message and attachment button
.I wird .file_add_btn
auf Klick auf den Button mit der Klasse ein Dateieingabefeld erstellen.Anfügen von Formulareingaben zu Formdata Objekt nicht arbeiten
//click event for add files
$(".file_add_btn").click(function(){
if($("#file_div").html() == '')
{
$("#file_div").append('<div class="file_btn_div" id="file_btn_div_first"><input type="file" class="btn_browse" name="file_uploads[]">'+
'<input type="button" class="del_file" value="X"></div>');
}
else
{
if($(document).find('.btn_browse:last').get(0).files.length !==0)
{
$("#file_div").append('<div class="file_btn_div"><input type="file" class="btn_browse" name="file_uploads[]">'+
'<input type="button" class="del_file" value="X"></div>');
}
}
});
Ich schreibe die folgende Funktion, um Dateieingaben in formData einzuschließen.
$.fn.serializefiles = function() {
var obj = $(this);
var form_data = new FormData(this[0]);
$.each($(obj).find('.btn_browse'), function(i, tag) {
$.each(tag.files, function(i, file) {
console.log(tag.name+' '+file.name)//this is printing in console
form_data.append(tag.name, file);
});
});
var params = $(obj).serializeArray();
$.each(params, function (i, val) {
console.log(val.name+'<br/>');
console.log(val.value+'<br/>');
**//here file names are not coming.All other elements are coming.They are not adding to form_data object**
form_data.append(val.name, val.value);
});
return form_data;
};
Meine Ajax-Aufruf wie folgt lautet:
$.ajax({
type: "POST",
url: 'process.php',
data: $("#compose_message").serializefiles() ,//formID=#compose_message
asyn: true,
cache: false,
processData: false,
contentType: false,
success:function()
....
Ich bin nicht in der Lage die Eingänge in die form_data
object.In Konsole anfügen, ich sehe [object FormData]
innerhalb des POST auf die Schaltfläche klicken.
Ich bin verwirrt, warum Sie brauchen diese 'serializefiles' Funktion, wann sollten Sie in der Lage sein, einfach tun, um' Daten: neue Formdata ($ ("# compose_message") [0]) '? – Mikey
Wenn wir 'data: new FormData ($ (" # compose_message ") [0])', wie kann ich die multiplen Dateieingaben und andere formdatas @ Mikey – Techy
@Mikey Ich habe 'console.log (JSON.Stringify (new FormData ($ ("# compose_message") [0]))); ', das gibt mir den leeren Wert' {} 'in der Konsole. – Techy