Показать сообщение отдельно
  #1 (permalink)  
Старый 22.03.2014, 18:56
Аватар для Hapson
Кандидат Javascript-наук
Отправить личное сообщение для Hapson Посмотреть профиль Найти все сообщения от Hapson
 
Регистрация: 23.07.2013
Сообщений: 122

Преобразование объекта в URL строку
Написал вот такую функцию:
function objectToUrlString(obj){
	function convert(param){
		var str = "";
		for(var x in param){if(!param.hasOwnProperty(x)){continue;}
			str += ifArray(x, param[x]) +"&";
		}
		return str.trim("&");
	}
	function ifArray(key, val){
		if($G.isObject(val) || $G.isArray(val)){
			var str = "", index;
			for(var x in val){if(!val.hasOwnProperty(x)){continue;}
				index = /[^0-9]+/.test(x) ? key +"['"+ x +"']" : key +"["+ x +"]";
				str += ifArray(index, val[x]) +"&";
			}
			return str.trim("&");
		}
		switch(val){
			case false: case undefined: case NaN: case Infinity: val = 0; break;
			case true: val = 1; break;
			case null: val = ""; break;
			default: val = val instanceof String ? val : val.toString();
		}
		val = encodeURIComponent(val);
		return encodeURIComponent(key) +"="+ val;
	}
	return convert(obj);
}

param = {
	cars:{
		auto:["opel", "daewoo"],
		bus:["tatra", "ikarus"]
	}
};

param = paramToString(param);

// cars["auto"][0]=opel&cars["auto"][1]=daewoo&cars["bus"][0]=tatra&cars["bus"][1]=ikarus

Она конвертирует объект с любой вложенностью в URL строку - можно всунуть ее в GET или POST.
В php потом все это будет в массивах GET или POST (после ajax отправки)
Вроде работает как хотел, но интересно, можно ли через эту функцию подсунуть какую-нибудь бяку на сервер? Или лучше использовать JSON?
Ответить с цитированием