Heim > Web-Frontend > js-Tutorial > Laden Sie Dateien über Ajax hoch und verwenden Sie FormData, um Ajax-Anfragen zu stellen

Laden Sie Dateien über Ajax hoch und verwenden Sie FormData, um Ajax-Anfragen zu stellen

亚连
Freigeben: 2018-05-23 15:41:35
Original
1525 Leute haben es durchsucht

In diesem Artikel werden hauptsächlich die relevanten Informationen zum Hochladen von Dateien über Ajax und zur Verwendung von FormData zum Stellen von Ajax-Anfragen vorgestellt. Freunde in Not können sich auf

Hochladen von Dateien über die herkömmliche Formularübermittlung beziehen:

Html-Code

<form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> 
   <h1 >测试通过Rest接口上传文件 </h1> 
   <p >指定文件名: <input type ="text" name="filename" /></p> 
   <p >上传文件: <input type ="file" name="file" /></p> 
   <p >关键字1: <input type ="text" name="keyword" /></p> 
   <p >关键字2: <input type ="text" name="keyword" /></p> 
   <p >关键字3: <input type ="text" name="keyword" /></p> 
   <input type ="submit" value="上传"/> 
</form>
Nach dem Login kopieren

Bei der herkömmlichen Formularübermittlung wird die Seite jedoch aktualisiert. In einigen Fällen möchten wir jedoch nicht, dass die Seite aktualisiert wird. In diesem Fall verwenden wir alle die Ajax-Request-Methode :

Js-Code

$.ajax({ 
   url : "http://localhost:8080/STS/rest/user", 
   type : "POST", 
   data : $( &#39;#postForm&#39;).serialize(), 
   success : function(data) { 
     $( &#39;#serverResponse&#39;).html(data); 
   }, 
   error : function(data) { 
     $( &#39;#serverResponse&#39;).html(data.status + " : " + data.statusText + " : " + data.responseText); 
   } 
});
Nach dem Login kopieren

Wie oben kann das Formular über $('#postForm').serialize() serialisiert werden, sodass alle Parameter im Formular werden an den Server übergeben.

Bei der obigen Methode können jedoch nur allgemeine Parameter übergeben werden und der Dateistream der hochgeladenen Datei kann nicht serialisiert und übergeben werden.
Mittlerweile unterstützen gängige Browser jedoch ein Objekt namens FormData. Mit diesem FormData können wir Ajax problemlos zum Hochladen von Dateien verwenden.

Über FormData und seine Verwendung

Was ist FormData? Werfen wir einen Blick auf die Einführung zu Mozilla.

XMLHttpRequest Level 2 fügt eine neue Schnittstelle FormData hinzu, mit der wir einige Schlüssel-Wert-Paare verwenden können, um eine Reihe von Formularsteuerelementen über JavaScript zu simulieren Machen Sie es asynchron. Im Vergleich zu gewöhnlichem Ajax besteht der größte Vorteil der Verwendung von FormData darin, dass wir eine Binärdatei asynchron hochladen können.

Neuere Versionen aller gängigen Browser unterstützen dieses Objekt bereits Chrome 7+, Firefox 4+, IE 10+, Opera 12+, Safari 5+.

Siehe: https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/FormData

Hier gibt es nur eine Möglichkeit, FormData über das Formularformular zu initialisieren

<form enctype="multipart/form-data" method="post" name="fileinfo">
Nach dem Login kopieren

Js-Code

var oData = new FormData(document.forms.namedItem("fileinfo" )); 
oData.append( "CustomField", "This is some extra data" ); 
var oReq = new XMLHttpRequest(); 
oReq.open( "POST", "stash.php" , true ); 
oReq.onload = function(oEvent) { 
   if (oReq.status == 200) { 
     oOutput.innerHTML = "Uploaded!" ; 
   } else { 
     oOutput.innerHTML = "Error " + oReq.status + " occurred uploading your file.<br \/>"; 
   } 
}; 
oReq.send(oData);
Nach dem Login kopieren

Siehe: https://developer.mozilla.org/zh-CN/docs/Web/Guide/Using_FormData_Objects

Verwenden Sie FormData, um Ajax-Anfragen zu stellen und Dateien hochzuladen

JQuery wird hier verwendet, aber ältere Versionen von JQuery wie 1.2 werden nicht unterstützt. Am besten verwenden Sie 2.0 oder neuere Versionen:

Html-Code

<form id= "uploadForm"> 
   <p >指定文件名: <input type="text" name="filename" value= ""/></p > 
   <p >上传文件: <input type="file" name="file"/></ p> 
   <input type="button" value="上传" onclick="doUpload()" /> 
</form>
Nach dem Login kopieren

Js-Code

function doUpload() { 
   var formData = new FormData($( "#uploadForm" )[0]); 
   $.ajax({ 
     url: &#39;http://localhost:8080/cfJAX_RS/rest/file/upload&#39; , 
     type: &#39;POST&#39;, 
     data: formData, 
     async: false, 
     cache: false, 
     contentType: false, 
     processData: false, 
     success: function (returndata) { 
       alert(returndata); 
     }, 
     error: function (returndata) { 
       alert(returndata); 
     } 
   }); 
}
Nach dem Login kopieren

Das Obige habe ich für alle zusammengestellt. Ich hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

So laden Sie Dateien mit jQuery Ajax hoch

Ajax verwenden, um asynchrone Aktualisierungsanforderungen zu implementieren

Ajax+php realisiert eine dreistufige Verknüpfung der Produktklassifizierung

Das obige ist der detaillierte Inhalt vonLaden Sie Dateien über Ajax hoch und verwenden Sie FormData, um Ajax-Anfragen zu stellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage