За последние 24 часа нас посетили 17733 программиста и 1676 роботов. Сейчас ищут 858 программистов ...

Как взять JavaScript`ом параметры из URL?

Тема в разделе "JavaScript и AJAX", создана пользователем Nachtvolk, 25 фев 2011.

  1. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Встала задачка взять кое-какие параметры из URL. Вот интересно, в JavaScript есть какие-то специальные средства для этого, или придётся брать сам URL и обрабатывать как строку?

    P.S. Протокол, конечно, http.
     
  2. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
     
  3. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Nachtvolk

    функция, которой я пользуюсь:

    [js]function parse_url(){
    // parse href link, returns object url { 'host':'', 'args':{} }
    // arguments is the assoc array key:value like { 'sortby':'price' }
    // multiple args like checkbox are set { 'ad_type': ['0', '1', '2'] }

    var url = {
    host: '',
    query: '',
    args: {}
    };

    var args = window.location.href.replace(/#.*/g, '').split('?');
    var params = isset(args[1]) ? args[1].split('&') : [];
    url['host'] = args[0];
    url['query'] = isset(args[1]) ? args[1] : '';

    for(var i=0; i < params.length; i++){
    args = params.split('=');
    key = args[0];
    val = isset(args[1]) ? decodeURIComponent(args[1]) : '';

    if(key == '' || val == '') continue;

    // for multiple values like checkboxes
    if(isset(url['args'][key])){
    if(typeof url['args'][key] == 'string'){
    url['args'][key] = [url['args'][key], val];
    } else {
    url['args'][key].push(val);
    }
    } else {
    url['args'][key] = val;
    }
    }

    return url;
    }[/js]
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    спасибо! =)
     
  5. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    забыл доп. функцию:

    [js]function isset(obj) {
    if (typeof(obj) !== 'undefined') return true;
    return false;
    }[/js]
     
  6. Nachtvolk

    Nachtvolk Активный пользователь

    С нами с:
    24 фев 2011
    Сообщения:
    31
    Симпатии:
    0
    Отлично. Gromo спасибо ещё раз.