javascript 로 codeigniter uri->segment() 함수 구현하기

php 프레임웍중에 최근 codeigniter 많이 쓰죠.

클래스, 함수, 인자들을 모두 uri 로 표시하게 되고 codeigniter 내장 클래스중에 URI 라는 클래스가 있어서 uri에 있는 값을  가져오려면 아래같이 하면 됩니다.

 

$this->uri->segment(n)

 

메뉴얼을 참고해보면 uri 이 아래같을때

 

http://example.com/index.php/news/local/metro/crime_is_up

 

각 segment 값은 1부터 시작하고 아래와 같게 됩니다.

 

$this->uri->segment(1) : news
$this->uri->segment(2) : local
$this->uri->segment(3) : metro
$this->uri->segment(4) : crime_is_up

 

서론이 길었는데 작업을 하다보면 이 기능을 자바스크립트에서 필요한 경우가 있습니다.

그래서 간단하게 한번 만들어봤습니다.


var uri =
{
segment_array : function  ()
{
var path = location.pathname;

        //-- 앞 / 제거
         path = path.substr(1);

//-- 끝 / 제거
if (path.slice(-1) == '/')
{
path = path.substr(0 , path.length - 1);
}

var seg_arr = path.split('/');

//-- index.php 제거
if (seg_arr[0] == 'index.php')
{
seg_arr.shift();
}

return seg_arr;
},

segment : function (n , v)
{
var seg_array = this.segment_array();
var seg_n = seg_array[n-1];

if (typeof seg_n == 'undefined')
{
if (typeof v != 'undefined')
{
return v;
}
else
{
return false;
}
}
else
{
return seg_n;
}
}
};

 

codeigniter 함수와 동일하게 값이 없을경우는 기본적으로 false 를 리턴하고,

해당 segment 값이 없을때 리턴할 기본값을 두번째 인자에 줄 수 있습니다.

아래같이 사용하면 됩니다.

uri.segment(3)
uri.segment(5 , 0)


참고자료

댓글 1개

(1)
  • 2013-02-20 수 11:08:50 (5 년전)
  • 멍멍
CI 로 작업하면서 자바스크립트로 segment 가져오는거 필요해서 구글에서 검색해서 들어왔는데 제가 찾던 자료가 있네요.
잘 쓰겠습니다. 

댓글쓰기

관련 post

Q

자바스크립트로 문자열에서 html 태그 제거하기

L

[번역] 자바스크립트 프로그래밍 언어에 대한 연구 (Douglas Crockford 의 A Survey of the JavaScript Programming Language)

L

[번역] 자바스크립트 클래스를 정의하는 3가지 방법 (3 ways to define a JavaScript class)

K

자바스크립트 쿠키 클래스