Написал вот такую функцию:
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?