2015/02/02 - [프로그램 자료/ASP.NET] - asp.net 에서 URL Query 가져오고, 값 변경 하기
/*
http://blog.javarouka.me/2012/02/url.html
JavaScript 에서 URL Query 가져오고, 값 변경 하기
*/
var QueryObject = function () {
var o = {};
var q = location.search.substring(1);
if (q) {
// 실제 그룹화 정규식.
var vg = /([^&=]+)=?([^&]*)/g;
// 인코딩된 공백문자열을 다시 공백으로
var sp = /\+/g;
// 정규식을 사용하여 값을 추출
var decode = function (s) {
if (!s) {
return '';
}
return decodeURIComponent(s.replace(sp, " "));
};
// 한번씩 exec를 실행하여 값을 받아온다.
var tmp;
while (tmp = vg.exec(q)) {
(function () {
var k = decode(tmp[1]);
var v = decode(tmp[2]);
var c;
if (k) {
o[k] = v;
// getXXX 형식의 자바빈 타입으로 사용하고 싶다면
// 윗 라인을 지우고, 아래와 같이 하면 됩니다.
//c = k.charAt(0).toUpperCase() + k.slice(1);
//o["get" + c] = function() { return v; }
//o["set" + c] = function(val) { v = val; }
}
})();
}
}
return o;
};
function QueryObjectToParam(obj) {
var param = "";
for (var key in obj) {
if (obj[key] != "")
param += "&" + key + "=" + encodeURIComponent(obj[key]);
}
if (param.length > 0)
param = param.substring(1, param.length);
return param;
}
function UrlStr() {
return location.protocol + "//" + location.host + location.pathname;
}
function UrlAddQueryObjParam(obj) {
var param = "";
for (var key in obj) {
if (obj[key] != "")
param += "&" + key + "=" + encodeURIComponent(obj[key]);
}
if (param.length > 0)
param = param.substring(1, param.length);
return UrlStr() + "?" + param;
}