Конструктор FormData теряет значение текстовой области в Edge - PullRequest
0 голосов
/ 10 октября 2018

У меня есть текстовое поле:

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

, и я POST его, создав объект 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 здесь

Я ожидаю, что это опубликует значение этой единственной текстовой области, которая работает на Chrome и Firefox.Однако в Edge 42.17134 тело запроса POST:

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


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

Это также хорошо работает в предыдущих версиях Edge.Я делаю что-то неправильно?Насколько я могу судить, я не полагаюсь на устаревшие функции.

1 Ответ

0 голосов
/ 12 октября 2018

Согласно вашему описанию и коду, я полагаю, что вы можете проверить официальный API о 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>

результат: первый путь

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>

результат Второй путь

С наилучшими пожеланиями,

Дженифер

...