javascript
  • browser
  • encoding
  • 2010-04-20 5 views 0 likes 
    0

    현재 페이지의 URL을 매개 변수로 사용하는 JavaScript 파일을로드합니다. 다음은 내가 사용하는 코드입니다.URL을 GET 매개 변수로 전달하기 위해 인코딩하는 방법

    document.write(unescape('%3Cscript src=\"' + _vis_opt_protocol + 'domain.com/js.php&a='+account_id+'&url='+encodeURIComponent(document.URL)+'&random='+Math.random()+'\" type=\"text/javascript\"%3E%3C/script%3E')); 
    

    나는 encodeURIComponent가 URL을 올바르게 인코딩하는 작업을 수행 할 것이라고 생각했습니다. 그러나 JS 파일을로드하는 동안 브라우저는 인코딩 된 URL도 해석합니다. 예를 들어 document.URL이 http://example.com/?test=1#nono 인 경우 브라우저는 test를 JS에 대한 다른 매개 변수로 해석하고 앵커라고 생각하기 때문에 #nono 다음에 아무 것도 보내지 않습니다.

    URL을 인코딩하여 서버로 전달하는 가장 좋은 방법은 무엇입니까? 나는 또한 base64 또는 인코딩의 다른 형태로 놀고 있었다.

    답변

    2

    문제는 unescape 함수가 실행 취소를 호출 할 때 encodeURIComponent의 작업을 수행한다는 것입니다. 다음을 시도해보십시오.

    document.write('<script type="text/javascript" src="' + _vis_opt_protocol + 'domain.com/js.php&a=' + account_id + '&url=' + encodeURIComponent(document.URL) + '&random=' + Math.random() + '"><\/sc' + 'ript>'); 
    
    +0

    감사합니다. 그것은 내 바보 같은 실수 였고 나는 해결책을 찾고있다! –

    +0

    해결책은'unescape '을 사용하지 말라는 것입니다. (이제까지 쓰레기 기능이었습니다.)' '문자열의' bobince

    관련 문제