Показать сообщение отдельно
  #1 (permalink)  
Старый 05.10.2011, 01:38
Аватар для pav
pav pav вне форума
Новичок на форуме
Отправить личное сообщение для pav Посмотреть профиль Найти все сообщения от pav
 
Регистрация: 02.08.2011
Сообщений: 4

Отправка формы с помощью XMLHttpRequest2 и FormData
Нужно было реализовать сабж. Затык в том, что $.ajax не поддерживает отправку данных, которые генерирует FormData, и соотв. код
options.data = new FormData($('#formId').get(0));
$.ajax(options);

возвращает ошибку.

Время поджимало, и я написал костыль:
$.aajax = function(options){
	var status;
	var xhr = $.ajaxSettings.xhr();
	xhr.timeout = cfg.timeout;
	(options.beforeSend) ? options.beforeSend() : $.ajaxSettings.beforeSend();
	xhr.open('POST',options.url);
	xhr.setRequestHeader('X-Requested-With','XMLHttpRequest');
	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4){
			if(xhr.status == 200){
				(options.success) ? options.success(xhr.responseText) : $.ajaxSettings.success(xhr,xhr.responseText);
				status = 'success';
			}else{
				status = 'error';
			}
			clearTimeout(timeout);
			(options.complete) ? options.complete(xhr,status) : $.ajaxSettings.complete(xhr,status);
		}
	};
	xhr.send(options.data);
	var timeout = setTimeout(function(){xhr.abort(); status='timeout'; $.ajaxSettings.complete(xhr,status)},cfg.timeout);
};

В событии отправки формы проверяется проверка наличия у юзера FormData и, если есть, отправка идет с помощью представленной выше функции. Собственно, вопрос: есть ли готовый плагин для поддержки отправки таких данных с помощью стандартного $.ajax? Не загрузку файлов по отдельности, а именно отправки всей формы. jquery.form делает это костылем со скрытым iframe, который по ряду причин нежелателен. Мой плагин, написанный на скорую руку, многих плюшек jquery не поддерживает, а дописывать их поддержку лень. Гугл обиделся и ничего подходящего не выдал. Помогите советом, братья-кодеры
Ответить с цитированием