我有这样的网址: http://mysite.aspx/results.aspx?s=bcs_locations&k=“医院”或“办公室”或...... k =之后的术语来自复选框,当选中时,复选框值正在传递。现在我需要获取当前的URL并获取k之后的所有值,所以如果有两个'Hospital'和Office然后获取这些值并选中这些值的复选框。努力坚持刷新已选中的复选框,所有选中的复选框都松散了状态..
Hospitals<input name="LocType" type="checkbox" value="Hospital"/>  
Offices<input name="LocType" type="checkbox" value="Office"/>  
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);
}
答案 0 :(得分:0)
这是我们用来从查询字符串中获取信息的方法。它来自另一个S.O.回答我找不到。但是这将为您提供一个表示查询字符串中所有选项的对象。
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;
};
答案 1 :(得分:0)
你可以这样做:
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?
答案 2 :(得分:0)
试试这个
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"}