Ich verwende jQuery und Ajax für meine Formulare, um Daten und Dateien zu senden, bin mir aber nicht sicher, wie ich Daten und Dateien in einem Formular senden soll?
Ich mache derzeit fast dasselbe mit beiden Methoden, aber die Art und Weise, wie die Daten in einem Array gesammelt werden, ist unterschiedlich, die Daten werden verwendet, .serialize();
aber die Dateien= new FormData($(this)[0]);
Ist es möglich, beide Methoden zu kombinieren, um Dateien und Daten über Ajax in einer Form hochladen zu können?
Daten jQuery, Ajax und HTML
$("form#data").submit(function(){
var formData = $(this).serialize();
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
<form id="data" method="post">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<button>Submit</button>
</form>
Dateien jQuery, Ajax und HTML
$("form#files").submit(function(){
var formData = new FormData($(this)[0]);
$.ajax({
url: window.location.pathname,
type: 'POST',
data: formData,
async: false,
success: function (data) {
alert(data)
},
cache: false,
contentType: false,
processData: false
});
return false;
});
<form id="files" method="post" enctype="multipart/form-data">
<input name="image" type="file" />
<button>Submit</button>
</form>
Wie kann ich das oben Genannte kombinieren, um Daten und Dateien in einem Formular über Ajax zu senden?
Mein Ziel ist es, all dieses Formular in einem Post mit Ajax senden zu können. Ist das möglich?
<form id="datafiles" method="post" enctype="multipart/form-data">
<input type="text" name="first" value="Bob" />
<input type="text" name="middle" value="James" />
<input type="text" name="last" value="Smith" />
<input name="image" type="file" />
<button>Submit</button>
</form>
FormData
FormData
Ansatz sollte gut mit Formularen funktionieren, die alles enthalten, was Sie wollen, nicht nur die Felder zum Hochladen von Dateien. es wird jedoch nicht allgemein unterstützt.