Wie kann ich mit Ajax Daten und Dateien gleichzeitig hochladen?
P粉012875927
2023-08-20 14:33:32
<p>Ich verwende jQuery und Ajax, um Daten und Dateien zu übermitteln, bin mir aber nicht sicher, wie ich sowohl Daten als auch Dateien in einem Formular senden soll? </p>
<p>Ich verwende derzeit beide Methoden fast auf die gleiche Weise, aber die Art und Weise, die Daten in einem Array zu sammeln, ist unterschiedlich, Daten verwenden <code>.serialize();</code> und Dateien verwenden <code> ;= new FormData($(this)[0]);</code></p>
<p>Ist es möglich, diese beiden Methoden zu kombinieren, um Dateien und Daten in einem Formular über Ajax hochzuladen? </p>
<p><strong>Daten jQuery, Ajax und HTML</strong></p>
<pre class="brush:php;toolbar:false;">$("form#data").submit(function(){
var formData = $(this).serialize();
$.ajax({
URL: window.location.pathname,
Typ: 'POST',
Daten: formData,
asynchron: falsch,
Erfolg: Funktion (Daten) {
Warnung(Daten)
},
Cache: falsch,
Inhaltstyp: falsch,
Prozessdaten: falsch
});
falsch zurückgeben;
});
<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>Senden</button>
</form></pre>
<p><strong>Dokumentation jQuery, Ajax und HTML</strong></p>
<pre class="brush:php;toolbar:false;">$("form#files").submit(function(){
var formData = new FormData($(this)[0]);
$.ajax({
URL: window.location.pathname,
Typ: 'POST',
Daten: formData,
asynchron: falsch,
Erfolg: Funktion (Daten) {
Warnung(Daten)
},
Cache: falsch,
Inhaltstyp: falsch,
Prozessdaten: falsch
});
falsch zurückgeben;
});
<form id="files" method="post" enctype="multipart/form-data">
<input name="image" type="file" />
<button>Senden</button>
</form></pre>
<p>Wie kann ich das oben Genannte kombinieren, damit ich Daten und Dateien in einem Formular über Ajax senden kann? </p>
<p>Mein Ziel ist es, alle diese Formulare gemeinsam über Ajax versenden zu können. Ist das möglich?</p>
<pre class="brush:php;toolbar:false;"><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>提交</button>
</form></pre>
<p><br /></p>
另一种选择是使用iframe并将表单的目标设置为它。
你可以尝试这样做(它使用jQuery):
它适用于所有浏览器,您不需要序列化或准备数据。 一个缺点是您无法监视进度。
此外,至少对于Chrome来说,请求不会出现在开发者工具的“xhr”选项卡下,而是出现在“doc”下。
我遇到的问题是使用了错误的jQuery标识符。
您可以使用一个表单使用ajax来上传数据和文件。
PHP + HTML
jQuery + Ajax
简化版本