Автоматический сбор данных Ajax-форм

Рассмотрим полезнейшую функцию, которая собирает в строку все данные определенной формы, чтобы затем передать их в Ajax-запросе.

Наверняка многим надоело писать отдельные Ajax-обработки форм данных, мне тоже. Поэтому, не долго думая, погуглив и не найдя нужного в просторах инета и в документации jQuery, я начал писать функцию, которая делает все это сама, и вот что у меня вышло:

function AjaxData(form){
	var form_data = "";
	if(form){
		// [ специальных хак под JQuery
		var id = "";
		id = $(form).attr("id");
		if(id==""){ 
			id = "id"+Math.round(Math.random() * 1000000000);
			$(form).attr("id", id);
		}
		// специальных хак под JQuery ]
		var Elements = $("#"+id+" * ");
		for(var i=0; i < Elements.length; i++){
			var name = $(Elements[i]).attr("name");
			if(name){
				var value = $(Elements[i]).val();
				if(value && name!="" && value!="" && (Elements[i].tagName=="INPUT" || Elements[i].tagName=="TEXTAREA" || Elements[i].tagName=="SELECT") ){
					
					var type = $(Elements[i]).attr("type");
					if(Elements[i].tagName=="INPUT" && (type=="radio" || type=="checkbox") && $(Elements[i]).attr("checked")==false){
						continue;
					}
					if(Elements[i].tagName=="SELECT" && $(Elements[i]).attr("multiple")){
						$("option", Elements[i]).each(function(){
							if($(this).attr("selected")){
								form_data = form_data+"&"+ name +"="+ $(this).val();
							}
						});
					}else{
						form_data = form_data+"&"+ name +"="+ value.replace(/%/g,"%25").replace(/&/g,"%26").replace(/+/g,'%2B');
					}
				}
			}
		}
	}
	return form_data;
}

Собственно эта функция собирает в строку все данные определенной формы, чтобы затем передать их в Ajax-запросе.

К примеру, если Вашей форме присвоить id="myForm", то пример применения будет такой:

$.post("test.php", "ajax=yes"+AjaxData( $("#myForm") ) );

Как видите, ничего сложного нет, и применять ее можно для любых полей данных, кроме файловых, сами знаете почему.

Думаю, функция поможет многим программистам, сам ей пользуюсь и другим советую, удачи!

Оцени публикацию:
  • 7,31
Оценили человек: 7
  •  
Теги : jQuery, Ajax

Похожие статьи:


Комментарии посетителей:
  • бхахахахаааа)))
    на jquery это делается одной строчкой.
    var formdata = $('.propereties_form').serialize();
    28 мая 2010, 19:08 коммент полезен : +4 # Гость

Предложения и пожелания:
Ваше имя: Ваш E-mail:
Введите изображенные цифры:
Captcha

HTML (19)

CSS (36)

PHP (21)

MySQL (14)

JavaScript (57)

Flash (6)

XML (3)

Apache (34)

Дизайн (35)

Продвижение (31)

Программы (26)

Unix (11)

Интересное (37)


Справочники и учебники:


Последние комменты:

Новые заметки:

Защита сервера от ошибок в phpMyAdmin

HTML5 - новые виды атак

Социальные рекомендации Twitter в Google

Ашманов про стартапы

Skype Distributed Database Architecture

Erlang - лекарство при высоких нагрузках

Amazon Web Services: инструменты обеспечения масштабируемости и отказоустойчивости

Обсуждения на форуме:

некорректно отображается страница в браузерах

не могу войти в admin

Нужна критика идеи

Поиск по дополнительным полям и формам

Вопрос по категориям

Несколько вопросов по проекту.

Плагины, меню и интеграция

Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter| Здравствуйте, Гость | Войти | Регистрация| Карта сайта | RSS ленты
О проекте | Скачать CMS | Видеоуроки | Документация | Плагины | Форум | Идеи | Новости | Веб-мастеру | Контакты

YaPro CMS в Живом Журнале

YaPro CMS в Твитере

YaPro CMS в Одноклассниках

YaPro CMS в Яндекс.Блогах


youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2012 YaPro.Ru


Главная » Веб-мастеру » JavaScript »