サンプルコードは次のとおりです ( 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 であるため良いですが、標準のように動作させる可能性はありますか?フォーム送信?