JavaScript/nodeJS & Ajax & Plugin

[Error] javascript/location.href/QueryString/ String타입/ ${EL} 파라미터 타입 오류

유혁스쿨 2020. 9. 7. 08:14
728x90
반응형

페이징 처리를 마치고 jQuery를 사용여 검색기능 작업중에 검색어와 검색기준을 파라미터에 담는 도중 에러가 발생했습니다. 

 

상황은

jQuery를 사용하여 버튼을 클릭하였을때 행(row)을 몇개를 띄워줄지에 대한 작업 처리에대한

<input class="btn btn-izone" type="button" value="10" >  
<input class="btn btn-izone" type="button" value="20" >   
<input class="btn btn-izone" type="button" value="30" >


$("#count-per-page .btn-izone").click(function(){
    let row = $(this).val();
//1번//location.href="/board/list?row="+row+'&page='+${page};
//2번//location.href="/board/list?row="+row+'&page='+${page}+'&keyword='+${keyword}+'&condition='+${condition};
    location.href="/board/list?row="+row+'&page='+${page}+'&keyword='+'${keyword}'+'&condition='+'${condition}';
});

기본 코드는 버튼을 누르게되면 해당하는 row의 수를 담아 1번코드가 실행되게하여 보여줄 행의갯수와 현재페이지를 유지하기위한 page를 파라미터로 넘겼습니다.

 

이후 검색작업을 하게 되었고, 컨트롤러에서 검색 작업을 구현을 마치고 쪽번호를 전환하거나 게시글 수를 선택했을때 검색어, 검색기준, 페이지번, 보여줄 행 을 유지하기위해 jQuery location에 파라미터를 추가적으로 심었는데 버튼이 작동이 안되는것 입니다.

 

F12개발툴 콘솔창에 뜬 에러 내용은 ReferenceError: 제목 is not defined at HTMLInputElement.<anonymous> 이였습니다.

 

location.href="/board/list?row="+row+"&page="+${page}+"&keyword="+${keyword}+"&condition="+${condition};

이것을

location.href="/board/list?row="+row+"&page="+${page}+"&keyword="+"${keyword}"+"&condition="+"${condition}";

이렇게 모두 하나 하나 홋따옴표로 씌워서 처리해주니 제대로 작동이 됩니다.

 

row와 page는 Integer타입이고 keyword변수와 condition변수는 String타입 입니다.

 

자바스크립트 location의 QueryString에서 integer 타입은 그냥 작성해도 상관이없는데 문자열은 "쌍따옴표"에 쌓이게 즉,  "${EL}" 이렇게 처리해야 하나봅니다. 

 

 

 

keyword랑 condition같은 String타입은 location으로 파라미터를 넘길때 "" 로 묶어줘야하나봅니다...

안그럼 Integer로 인식되버려서 넘길때의 타입방식은 Integer인데 정작 값은 String속성을 띄게되어서 컨트롤러로 넘어가지않고 location 자체가 작동이 아에 안되는것같습니댱....

 

 

그러나,,, 다시보니까 제가 조금 헛짓거리를 했네요

location.href="/board/list?row="+row+'&page='+${page}+'&keyword={keyword}&condition=${condition}';

고냥 요렇게 String만 한번에 다 묶어버릴까요?

 

 

아 아니다 싹다 묶어버립시다.

location.href="/board/list?row="+row+"&page=${page}&keyword=${keyword}&condition=${condition}";

 

 

그냥 location사용할때는 인트든 스트링이든 상관없이 파라미터 속성값을 '홋따옴표' 안에 넣어버리는게 속시원할거같네요... 어차피 컨트롤러에서 받을때 자동으로 타입 변환 할텐데 뭐... 

 

 

 

728x90
반응형