четверг, 22 декабря 2011 г.

JavaScript: URL-декодирование и массив GET

Понадобились в работе аналоги функций PHP urlencode() и urldecode() для JavaScrip. Немного погуглив, понял, что люди конструируют различные велосипеды, хотя мне казалось, что должен быть простой путь. Так и оказалось. В JavaScript есть пара аналогичных функций: encodeURIComponent() и decodeURIComponent().

И в придачу, чтобы не забыть, функция для преобразования URL-строки в ассоциативный массив, аналог $_GET в PHP.
function getUrlVars()  
{  
    var vars = {}, hash;  
    var hashes = decodeURIComponent(window.location.href)
                   .slice(window.location.href.indexOf('?') + 1).split('&');  
  
    for(var i = 0; i < hashes.length; i++)  
    {  
        hash = hashes[i].split('=');  
        vars[hash[0]] = hash[1];  
    }  
  
    return vars;  
}      

// использование
_get = getUrlVars();
a = _get['a'];