FormData构造函数在Edge中丢失textarea值

时间:2018-10-10 09:22:19

标签: javascript xmlhttprequest microsoft-edge form-data

我有一个文本区域:

<textarea cols="20" id="testtextbox" name="testtextbox" rows="2">test</textarea>

然后我通过构建FormData对象将其发布:

var newForm = $('<form></form>').append($("#testtextbox"))
var formdata = new FormData(newForm.get(0));

var xhr = new XMLHttpRequest();
xhr.open('POST', '/', true);
xhr.send(formdata);

JSFiddle here

我希望它能发布该文本区域的值,该文本区域可在Chrome和Firefox上运行。 但是,在Edge 42.17134上,POSTed请求正文为:

-----------------------------7e2203930476
Content-Disposition: form-data; name="testtextbox"


-----------------------------7e2203930476--

这在Edge的早期版本中也可以正常使用。 难道我做错了什么?据我所知,我不依赖任何不推荐使用的功能。

1 个答案:

答案 0 :(得分:0)

根据您的描述和代码,建议您像以下两种方法一样检查the official API about formdata并修改代码。

1。使用formdata.append附加值

<textarea cols="20" id="testtextbox" name="testtextbox" rows="2">test</textarea>
<script type="text/javascript">
   var formdata = new FormData();
   formdata.append("testtextbox", testtextbox.value);
   var xhr = new XMLHttpRequest();
   xhr.open('POST', '/', true);
   xhr.send(formdata);
</script>

结果:the first way

2。将表单添加到页面正文

<form id="form1" name="form1">
    <textarea cols="20" id="testtextbox" name="testtextbox" rows="2">test</textarea>
</form>
<script type="text/javascript">
    $(function () {
        var newForm = $("#form1");
        var formdata = new FormData(newForm.get(0)); 

        var xhr = new XMLHttpRequest();
        xhr.open('POST', '/', true);
        xhr.send(formdata);
    })
</script>

结果:the second way

最好的问候,

珍妮弗