2016-12-28 6 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 
      } 

スクリプトが誤って変な文字に回すエンコードされているèàòのような文字を除いて正常に動作しています。 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のserializeメソッドを使用します。フォーム全体をシリアライズしてエンコードします。

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

ありがとう、それは私が考えた解決策でしたが、方法は私のために働かないでしょう。その間に私は解決策を見つけました。私はできるだけ早く投稿します。 –

関連する問題