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