我正在使用此脚本将表单提交转换为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上使用。 谢谢你的帮助。
答案 0 :(得分: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);
答案 1 :(得分: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
}