получить шаблон регулярного выражения для текущего URL - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть URL-адрес, подобный следующему: http://mysite.aspx/results.aspx?s=bcs_locations&k="Hospital" ИЛИ "Офис" ИЛИ ... Термины после k = приходят из флажков, когда флажок передается, значения значений флажков передаются.Теперь мне нужно получить текущий URL-адрес и получить все значения после k, так что если есть два «Больница» и Office, тогда возьмите эти значения и установите флажки с этими значениями. Попытайтесь сохранить сохраненные флажки, потому что при обновлениивсе отмеченные чекбоксы теряют свое состояние ..

Hospitals<input name="LocType" type="checkbox" value="Hospital"/> &#160; 
Offices<input name="LocType" type="checkbox"  value="Office"/> &#160; 
Emergency Centers<input name="LocType" type="checkbox"  value="Emergency"/>

Пока что у меня есть: я хочу регулярное выражение для такого шаблона URl ... кто-нибудь может помочь?

 var value = window.location.href.match(/[?&]k=([^&#]+)/) || [];
    if (value.length == 2) {
        $('input[name="LocType"][value="' + value[1] + '"]').prop("checked", true);
     }  

Ответы [ 3 ]

0 голосов
/ 26 февраля 2012

Вы могли бы сделать это так:

var MyApp = {
    urlArgs:{}
};

MyApp.processUrlArgs = function() {
    this.urlArgs = {};
    var str = window.location.search ? window.location.search.substring(1) : false;
    if( ! str ) return;
    var sp = str.split(/&+/);
    var rx = /^([^=]+)(=(.+))?/;
    var k, v, i, m;
    for( i in sp ) {
        m = rx.exec( sp[i] );
    if( ! m ) continue;
    this.urlArgs[decodeURIComponent(m[1])] = decodeURIComponent(m[3]);
    }
};

Но я не понимаю, почему это так?Если вы работаете в ASP, почему бы вам не использовать HttpUtility.ParseQueryString ?

0 голосов
/ 26 февраля 2012

попробуйте

function getParamsFromUrl(url){
    var paramsStr = url.split('?')[1],
        params = paramsStr.split('&'),
        paramsObj = {};

    for(var i=0;i < params.length; i++){
        var param= params[i].split('='),
            name = param[0],
            value = param[1];
        paramsObj[name] = value;
    }
    return paramsObj;
}

var testUrl = 'http://mysite.aspx/results.aspx?s=bcs_locations&k=Hospital';
getParamsFromUrl(testUrl);//return: Object { s="bcs_locations", k="Hospital"}
0 голосов
/ 26 февраля 2012

Это то, что мы используем, чтобы получить информацию из строки запроса.Это из другого SO ответа, который я не могу найти.Но это даст вам объект, который представляет все параметры в строке запроса.

var qs = function(){
    var query_string = {};
    if(window.location.search){
        (function () {
            var e,
                a = /\+/g,  // Regex for replacing addition symbol with a space
                r = /([^&=]+)=?([^&]*)/g,
                d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
                q = window.location.search.substring(1);

            while (e = r.exec(q)){
               query_string[d(e[1])] = d(e[2]);
            }
        }());
    }
    return query_string;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...