2016-12-28 2 views
0

Ich bin mit diesem Skript ein Formular Vorlage in ein Ajax-Vorlage Umwandlung:jQuery, gibt es eine Möglichkeit, umURIComponent ein FormData zu codieren?

var formData = new FormData($(form)[0]); 
     $.ajax({ 
      type: "POST", 
      url: ...myurl... 
      data: formData, 
      dataType: "json", 
      async: false, 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function (data) { 
      ...some success code 
      } 

Das Skript außer funktioniert gut für Charaktere wie ò à è, die falsch verwandelt sich in seltsame Zeichen codiert werden. Ich denke, ich muss die encodeURIComponent Funktion verwenden, aber ich weiß nicht, wie und ob es auf FormData möglich ist. Danke für Ihre Hilfe.

+0

überprüfen Sie bitte http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_encodeuricomponent – Osgux

+0

Daten: {name: encodeURIComponent (name)} – Osgux

+0

Dank Osgux, aber es funktioniert nicht für mich , die von Ihnen vorgeschlagene Lösung ist gültig, wenn Sie den zu codierenden Feldnamen kennen. Meine Bedürfnisse sind, ein generisches Skript zu verwenden, um mit verschiedenen Eingabe-Namen mit anderen Form zu verwenden, aus diesem Grund verwende ich FormData, um Eingabefelder zu lesen –

Antwort

0

Einige Referenzen:

https://developer.mozilla.org/en-US/docs/Web/API/FormData/Using_FormData_Objects

https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries

https://developer.mozilla.org/en-US/docs/Web/API/FormData/entries

<form enctype="multipart/form-data" method="post" name="fileinfo"> 
    <label>Your email address:</label> 
    <input type="email" autocomplete="on" autofocus name="userid" placeholder="email" size="32" maxlength="64" /><br /> 
    <label>Custom file label:</label> 
    <input type="text" name="filelabel" size="12" maxlength="32" /><br /> 
<input type="submit" value="Stash the file!" /> 
</form> 

var formTest = document.forms.namedItem("fileinfo"); 
formTest.addEventListener('submit', function(ev) { 

var oData = new FormData(formTest); 
var newForm = new FormData(); 
for(var pair of oData.entries()) { 
    newForm.append(pair[0],encodeURIComponent(pair[1])); 
} 

for(var test of newForm.entries()) { 
    alert(test[0]+ ', '+ test[1]); 
} 

ev.preventDefault(); 
}, false); 

https://jsfiddle.net/s35dg34b/

0

Verwenden jQuery-Methode serialize. Es serialisiert und codiert das ganze Formular.

$.ajax({ 
     type: "POST", 
     url: ...myurl... 
     data: $(form).serialize(), 
     dataType: "json", 
     async: false, 
     cache: false, 
     contentType: false, 
     processData: false, 
     success: function (data) { 
     ...some success code 
     } 
+0

Danke, das war die Lösung, über die ich nachgedacht habe, aber ich muss auch Dateien übertragen Der Weg wird nicht für mich funktionieren. Ich habe inzwischen die Lösung gefunden, die ich so schnell wie möglich posten werde. –

Verwandte Themen