【发布时间】:2014-03-29 14:35:51
【问题描述】:
这里是示例代码 (http://jsfiddle.net/epsSZ/1/):
HTML:
<form enctype="multipart/form-data" action="/echo/html" method="post" name="fileinfo" accept-charset="windows-1251">
<label>Label:</label>
<input type="text" name="label" size="12" maxlength="32" value="får løbende" /><br />
<input type="submit" value="Send standart">
</form>
<button onclick="sendForm()">Send ajax!</button>
JS:
window.sendForm = function() {
var oOutput = document.getElementById("output"),
oData = new FormData(document.forms.namedItem("fileinfo"));
var oReq = new XMLHttpRequest();
oReq.open("POST", "/echo/html", true);
oReq.send(oData);
}
当我通过标准表单提交以这种旧方式提交时,请求有效负载如下所示:
------WebKitFormBoundary2890GbzEKCmB08rz
Content-Disposition: form-data; name="label"
får løbende
但是当我提交这种 AJAX 方式时,它看起来并没有什么不同:
------WebKitFormBoundaryPO2mPRFKj3zsKVM5
Content-Disposition: form-data; name="label"
får løbende
如您所见,在前一种情况下,有些字符被替换为字符实体,
但是在使用FormData 的情况下,有纯字符串,这当然很好,因为它是 utf-8,但是有没有可能让它表现得像标准表单提交?
【问题讨论】:
标签: javascript ajax character-encoding form-data xmlhttprequest-level2