2017-03-02 4 views
-1

JavaScript를 사용하여 XML 문서에서 URL 문자열을 동적으로 생성하려고하는 이상한 상황이 있습니다. encodeURIComponent를 사용하여 문자열의 앰퍼샌드를 사용하여 URL 매개 변수를 어셈블하고 필요한 URL을 구성하는 방법을 알아 냈습니다. 그러나 디코딩 된 문자열로 페이지에 URL을 작성해야합니다. 그렇지 않으면 해당 URL을 방문하면 올바르게 수행해야하는 작업이 실행되지 않기 때문입니다. 전체 문서는 JavaScript로 작성되었으므로 JavaScript 환경에 있어야합니다.자바 스크립트에서 encodeURIComponent를 사용하여 URL 변수를 인코딩하지만 디코딩하여 쓰기가 가능합니까?

예를 들어, 내가 제대로 렌더링하기 위해 XML의 순서를 조합 할 수있어 다음과 같은 URL이 있습니다

http://www.myurl.com/product-name?itemcolor=2%26size=7

을하지만를, 내가 링크로이로 다시 설정해야합니다 는 XML 문서에서 :

http://www.myurl.com/product-name?itemcolor=2&size=7

는 것이 가능할까요? 말이 돼?

가 여기에 지금까지 내 코드입니다 :

var baseURL = 'http://myurl.com', urlappend = '', colorid, sizeid; 

function getVariants(item) { 
    variants = '<variant>'; 
     if ("custitem109" in item['columns']){ 
      colorid = item['columns']['custitem109']['internalid']; 
      urlappend += '?itemcolor=' + colorid; 
     } 
     if ("custitem110" in item['columns']){ 
      sizeid = item['columns']['custitem110']['internalid']; 
      urlappend += colorid ? encodeURIComponent('&') + 'size=' + sizeid : '?size=' + sizeid; 
     } 

     if (typeof item['columns']['urlcomponent'] !== 'undefined' && urlappend !== '') { 
      variants += '<action_url>' + baseURL + '/' + item['columns']['urlcomponent'] + urlappend + '></action_url>'; 
     } 

    variants += '</variant>'; 
    return variants; 
} 

(이 기능은 XML 피드의 일부를 구성하는 여러 번을 반복됩니다) 이것은 그 어떤 차이가 경우 넷 스위트의 suitelet 또는 이 모든 것이 JS 환경에 있어야하는 이유에 대해 궁금한 점이 있으면

제공된 도움을 주시면 매우 감사하겠습니다.

+0

일반적으로 nlapEscapeXML을 통해 실행해야합니다

http://www.myurl.com/product-name?itemcolor=2&amp;size=7 

된다 decodeURIComponent()를 사용하여 '?'다음에 문자열 부분을 디코딩 할 수 있습니다. 뒤쪽에. – rasmeister

+1

"*가 올바르게 렌더링되도록하려면 *"을 의미합니까? – Bergi

+1

인코딩 비율을 XML 인코딩과 혼동하는 것 같습니다. 테스트 한 라이브러리가 많을 때 자신의 인코딩 기능을 작성하지 마십시오. 그러면 제대로 된 기능을 수행 할 수 있습니다. – zzzzBov

답변

0

실제로 원하는 것은 URL을 올바르게 구성한 다음 XML에서 이스케이프 처리하는 것입니다.

예 : '?'

http://www.myurl.com/product-name?itemcolor=2&size=7 

당신은 당신에게 그 후에 모든 것을 인코딩, 그리고 것, 모든 무료 문자는

nlapiEscapeXML('http://www.myurl.com/product-name?itemcolor=2&size=7'); 
+0

거룩한 쓰레기. 넷 스위트 경험을 가진 사람 ??? 나는 유니콘을 찾은 것 같은 기분이 든다. 이것은 완전히 트릭을했습니다. 첫 번째 encodeURIComponent()도 필요하지 않았습니다. NetSuite에 남겨주세요 ... – B1gJ4k3

+0

실제로 NetSuite의 경험이 적지 만 여기에 우리 중 몇몇이 있다고 생각합니다. 이것이 당신을 위해 효과가 있었다면 이것을 받아 들인 대답으로 표시하는 것이 좋을 것입니다. – bknights