2016-12-28 37 views
0

我將表單提交到AJAX提交與此腳本:jQuery,有沒有辦法encodeURIComponent FormData?

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 
      } 

的腳本工作除了像òA E被編碼錯誤變成奇怪的字符的字符罰款。 我想我需要使用encodeURIComponent函數,但我不知道如何以及它是否可能在FormData上。 感謝您的幫助。

+0

請http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_encodeuricomponent – Osgux

+0

數據:{名稱:encodeURIComponent方法(名稱)} – Osgux

+0

感謝Osgux,但它不爲我工作,如果您知道要編碼的字段名稱,則您建議的解決方案是有效的。我的需求是使用通用腳本來使用具有不同輸入名稱的不同表單,這就是我使用FormData讀取輸入字段的原因 –

回答

0

一些參考:

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

使用jQuery的序列化方法。它序列化和編碼整個表單。

$.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

謝謝,這是我想到的解決方案,但我也必須傳輸文件,以便方式不適合我。 我同時找到了解決方案,我會盡快發佈。 –