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

Автор: Aport Пятница, Январь 23rd, 2015 Нет комментариев

Рубрика: Разное

Рассмотрим полезнейшую функцию, которая собирает в строку все данные определенной формы, чтобы затем передать их в 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") ) );

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

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

 

Источник: yapro.ru

Оставить комментарий

Чтобы оставлять комментарии Вы должны быть авторизованы.

Похожие посты