자바스크립트 URL 쿼리스트링(query string) 분리 (PHP _GET)
PHP에서의 _GET에 해당하는 형태로 URL의 쿼리 스트링을 분리해주는 함수 입니다.
아래 두개 함수는 비슷한것으로 위쪽에 있는것만 사용을해도 됩니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>자바스크립트 쿼리스트링 분리 </title>
</head>
<body>
<script>
$(document).ready(function()
{
/**
* 쿼리스트링 파서
*
* @param mixed url='browser'
*
* @return [type]
*
*/
function getUrlVars( url='browser' )
{
let vars = {}, hash;
if ( url == 'browser' ) {
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
}
else {
var hashes = url.slice(url.indexOf('?') + 1).split('&');
}
for(var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
vars[hash[0]] = hash[1];
}
return vars;
}
let aParm = getUrlVars( url );
console.log('입력 url: ', url);
console.log(aParm);
console.log('객체출력: ', aParm['test']);
console.log('객체출력: ', getUrlVars(url)['test']);
console.log('--------------------------------------------');
console.log('');
/**
* 쿼리 스트링에서 특정 파라미터 값만 가져올 때
*
* @param mixed name
* @param mixed url
*
* @return [type]
*
*/
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
let rtn = getParameterByName('test', url);
console.log('리턴값은: ', rtn);
});
</script>
</body>
</html>
아래쪽은 파라미터에 있는 특정한 값만 가져오는 것입니다.
위쪽은 전체를 배열로 돌려 줍니다. 그렇기 때문에 위쪽의 것을 그대로 사용해도 됩니다. 배열키가 쿼리스트링의 앞쪽에 있는 파라미터명에 해당 되기 때문입니다.
* 이것과 반대의 역활은 아래 주소를 참고하세요
자바스크립트 배열을 쿼리스트링으로( http_build_query ) > javascript
관련링크