Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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.
Ответить с цитированием
  #2 (permalink)  
Старый 03.08.2012, 11:13
Аватар для cmd
cmd cmd вне форума
Профессор
Отправить личное сообщение для cmd Посмотреть профиль Найти все сообщения от cmd
 
Регистрация: 19.03.2011
Сообщений: 177

Не могу понять, а где этот самый id="image_new"?
__________________
Cogito, ergo sum
Ответить с цитированием
  #3 (permalink)  
Старый 03.08.2012, 13:20
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

Пардон, когда переносил сюда код — опечатался. Везде "new_image".
Ответить с цитированием
  #4 (permalink)  
Старый 03.08.2012, 14:09
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

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


Так работает.
Ответить с цитированием
  #5 (permalink)  
Старый 03.08.2012, 14:31
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

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

Сообщение от vadim5june Посмотреть сообщение
А что за метод getFormData?
https://hacks.mozilla.org/2010/05/fo...ng-to-firefox/
Ответить с цитированием
  #7 (permalink)  
Старый 03.08.2012, 14:43
Аватар для vadim5june
Студент
Отправить личное сообщение для vadim5june Посмотреть профиль Найти все сообщения от vadim5june
 
Регистрация: 30.04.2012
Сообщений: 1,113

так он только в мозилле работает
а alert(formElement.getFormData) выдает функцию?
по ошибке как будто бы этот метод не определен
formElement.getFormData is not a function
Ответить с цитированием
  #8 (permalink)  
Старый 03.08.2012, 14:54
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

Уже не важно, data=new FormData(form) работает как нужно
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Асинхронная отправка файла через jQuery InviS jQuery 3 23.04.2013 22:27
Автоматическая работа script в подгруженном через AJAX div'e rost Javascript под браузер 4 06.07.2012 21:24
кеширование HTML переданого через ajax BorisBritva jQuery 6 02.04.2011 01:23
Вызов функции печати страницы полученной через AJAX Garik AJAX и COMET 4 02.03.2011 17:05
Послать форму загруженную через ajax в div используя ajax ncux jQuery 2 16.08.2010 17:36