Показать сообщение отдельно
  #1 (permalink)  
Старый 03.08.2012, 03:57
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

getFormData и отправка изображений через ajax
Есть форма:

Код:
<form accept-charset="UTF-8" action="/foobar/images" class="new_image" data-remote="true" enctype="multipart/form-data" id="new_image" method="post">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="o8e15OqFzi/PYcWfzwpoBZb4YMHJ3JZ+2TU9Id/afi8=" /></div>
  <p>
    <label for="image_name">Name</label>
    <br>
    <input id="image_name" name="image[name]" size="30" type="text" />
  </p>
  <p>
    <input id="image_image" name="image[image]" type="file" />
  </p>
  <p>
    <input name="commit" type="submit" value="Create Image" />
  </p>
</form>
И такой простенький код, для отправки изображения через ajax:

function upload(file) {

  var formdata = new FormData();
  formdata.append("image[name]", "Foooobar");
  formdata.append("image[image]", file);
  var xhr = new XMLHttpRequest();
  xhr.open("POST", "images");
  xhr.send(formdata);
}

$('#image_image').change(function()
{
  upload(this.files[0]);
});


Он работает и загружает изображение.

Но когда я пытаюсь сделать так:

$('#image_image').change(function()
{
  var formElement = document.getElementById("new_image");
  var xhr = new XMLHttpRequest();
  xhr.open("POST", "images");
  xhr.send(formElement.getFormData());
});


То вижу ошибку в Файрбаге:

Код:
TypeError: formElement.getFormData is not a function
[Break On This Error] 	

xhr.send(formElement.getFormData());
Что я делаю не так? Почему js ругается на эту функцию?

Последний раз редактировалось ksevelyar, 03.08.2012 в 13:16.
Ответить с цитированием