<a href="#" onClick="myFunction('<?php echo $value; ?>')"> 클릭! </a> function myFunction( form ){ //처리. }
대략 이런 경우가 있다고 해보자. 저 $value값에 따옴표라던가, 어떤 값이 들어가면 제대로 함수가 실행이 안된다. $value값을 <ega>\"ag 라 가정하자. 페이지를 불러와서 해당 링크를 클릭해보면 아무런 반응이 없다. 왜그럴까?
PHP는 서버단에서 실행되는 언어다. 문제 확인을 위해 페이지가 다 로딩 된 후 소스보기로 HTML 소스를 확인해보자.
<a href="#" onClick="myFunction(' <ega>"ag ')">
확인해본 소스는 이렇다. 함수 안의 매개변수에 포함된 " 큰따옴표가 함수를 중간에서 잘라 끝내 버린 격이 돼버린 것.
그래서 필요한 게 인코딩이다. 저런 특수 문자들을 희한한 문자들로 바꿔 준다.
인코딩된 문자열을 받은 myFunction() 함수는 디코딩 함수를 통해 원래 값을 가져오면 된다.
아래는 인코딩과 디코딩을 사용하여 상단 예제를 바꾼 것이다.
<a href="#" onClick="myFunction('<?php echo rawUrlEncode($value); ?>')"> function myFunction( form ){ form = decodeURIComponent(form) ; //처리. }PHP에서 rawUrlEncode()는 자바스크립트의 encodeURIComponent()와 같고,
PHP에서 rawUrlDecode()는 자바스크립트의 decodeURIComponent()와 같다.
출처는 역시 스택오버플로우.
http://stackoverflow.com/questions/1105434/php-javascript-url-encoding
댓글 없음 :
댓글 쓰기