jQuery,是否有一种编码formdata的方法



我正在使用此脚本将表单提交转换为ajax提交:

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上是否可能。感谢您的帮助。

一些参考:

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/

使用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
        }

相关内容

最新更新