Показать сообщение отдельно
  #6 (permalink)  
Старый 29.07.2012, 13:26
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от z700i Посмотреть сообщение
Нужен JS аналог PHP кода
function params($params) {
    $pice = array();
    foreach($params as $k=>$v) {
        $pice[] = $k.'='.urlencode($v);
    }
    return implode('&',$pice);
}​​​​​​
нерекурсивно, но расширяемо.
function params (obj) {
    var res = [], i, type;
    for (i in obj) {
        // класс объекта. Array, Number, Undefined ...
        type = Object.prototype.toString.call(obj[i]).slice(8, -1);
        // либо результат хука, либо "как есть"
        res.push( type in params ? params[type](i, obj[i]) : i + "=" + encodeURI(obj[i]) );
    }
    return res.join("&");
}

// расширения
// научим обрабатывать массивы
params["Array"] = function (key, val) {
    for (var i = 0, buffer = []; i in val; i += 1) {
        buffer.push(key + "[]=" + encodeURI(val[i]));
    }
    return buffer.join("&");
};
// и флаги
params["Undefined"] = function (key) {
    return key;
};

// использование
var prms = {
    foo: "bar", 
    bool: true, 
    num: 9000, 
    arr: [1, 2, 3],
    flag: undefined
};

alert( params(prms) );
Ответить с цитированием