2012-08-22 5 views
0

내 Coldfusion 구성 요소 중 하나에서 반환 된 문자열을 자르고 싶지만 ColdFusion은 줄 바꿈을 추가하여 자바 스크립트에서 오류를 발생시키는 이유없이 문자열 시작 부분에 추가합니다. 이 코드의 문제점에 대해 알고 있습니까?트림이 Coldfusion 8.0에서 작동하지 않습니다

function back(){    
     window.location = <cfoutput>"#Trim(Session.history.getBackUrl())#"</cfoutput>; 
} 

코드 위의 HTML의 다음 평화 생산 :

function back(){ 
     window.location = " 

      http://dummy_server_address/index.cfm?TargetUrl=disp_main"; 
} 

여기 ColdFusion에서 사양을 살펴보면를 트림 정의한다 : 선행 및 후행 공백을 제거한 후, 문자열 매개 변수의 사본 및 제어 문자.

그래서 작업을 완료해야합니다! 그래서 나는 그것을 올바르게하는 방법을 궁금해하고 있으며, 대체 또는 유사한 기능을 사용하고 싶지 않습니다.

EDIT : 매우 놀랍게도 이것은 작동 중입니다 ...하지만이 솔루션에 대한 다른 생각이 있거나 적어도이 동작에 대한 설명이있는 경우이 솔루션이 마음에 들지 않습니다.

<cfset backUrl = Session.history.getBackUrl()> 
    function back(){    
      window.location = <cfoutput>"#backUrl#"</cfoutput>; 
    } 
+0

Session.history.getBackUrl() 함수에서 문자열을 반환 할 때 Trim()을 사용하지 않는 이유는 무엇입니까? – Lucas

+6

getBackUrl 함수에 대해'output = false'를 시도하십시오. – Sergii

+0

위의 "Sergii"의 덧글에 추가하려면 -'showdebugoutput = "false"'와'enablecfoutputonly = "true"' –

답변

10

기록 구성 요소의 출력이 비활성화되어 있는지 확인하십시오. 즉 :

<cfcomponent output=false > 

다음 또한output=false 세트가있는 CFC 에 getBackUrl 기능 (및 다른 모든 기능을)해야합니다.

또한, 가 탈출 적절하게되어 있는지 확인하기 위해, 변수에 JsStringFormat를 사용하는 것을 잊지 마세요하십시오 그렇지 않으면

<cfoutput>"#JsStringFormat(Session.history.getBackUrl())#"</cfoutput> 

을, 자바 스크립트 주입, 아니면 그냥 JS 오류에 대한 잠재적 인 위험이있다 URL에 "이 포함 된 경우

+1

+1이 게으르지 않다는 것을 확인하십시오 :) – Sergii

1

나는 당신의 현재 코드를 테스트 한 그리고 그것은 나를 위해 잘 작동, 당신의 CFC 내가 분명히 복제 할 수있는, 당신이 생각하는 다음 추가를 반환 할 수 있다는 생각한다. 개인적으로 항상 구성 요소가 사실 후에 정크 문자를 제거하지 않고 '깨끗한'결과를 반환하는지 확인합니다.

저는 이전에 비슷한 문제가 있었으며 항상 cfoutput과 관련이 있다는 것을 알고 있습니다. 그것의 바닥. 시작 지점으로이 방법을 다시 작성하여 차이가 있는지 확인하십시오.

<cfset variables.stWindowLocation = '"' & Trim(Session.history.getBackUrl()) & '"'> 
<cfoutput>  
    function back() {    
    window.location = #variables.stWindowLocation#;} 
</cfoutput> 
관련 문제