Javascript: получить все ключи и значения форм и объединить их как объект javascript для использования с XHR 2 FormData - PullRequest
1 голос
/ 04 июля 2011

Я использую этот маленький фрагмент для получения значений формы:

myForm = document.forms[1];
email = myForm.elements['email']; 

однако, если я планирую использовать это с FormData XHR 2, я должен сделать это:

function sendForm() {
  var formData = new FormData();
  formData.append('email', email);

  var xhr = new XMLHttpRequest();
  xhr.open('POST', '/server', true);
  xhr.onload = function(e) { ... };

  xhr.send(formData);
}

Есть ли способ получить все данные формы в виде одного объекта JavaScript, с которым я могу использовать FormData?

Ответы [ 2 ]

2 голосов
/ 06 июня 2013

Просто установите объект формы в качестве параметра FormData:

function sendForm() {
  var myForm = document.forms[1];
  var formData = new FormData(myForm);

  var xhr = new XMLHttpRequest();
  xhr.open('POST', '/server', true);
  xhr.onload = function(e) { ... };
  xhr.send(formData);
}

Примечание: он также работает с input type="file"

0 голосов
/ 04 июля 2011

Что вы можете сделать, так это сохранить всю информацию в массиве и динамически добавлять их.

var myForm = document.forms[1];
var data = {};
data["email"] = myForm.elements["email"];
data["username"] = myForm.elements["username"];
data["password"] = myForm.elements["password"];
//  ... and so on...

Теперь при отправке вы можете передать данные в качестве аргумента и добавить все данные:

function sendForm(data) {
  var formData = new FormData();

  for(var i in data) {
    formData.append(i,data[i]);
  }

  var xhr = new XMLHttpRequest();
  xhr.open('POST', '/server', true);
  xhr.onload = function(e) { ... };

  xhr.send(formData);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...