2011-12-15 2 views
1

이미 답변을 드렸다면 미리 사과드립니다.

내 목표는 요소 수를 잡아 내 웹 페이지에 새로 고치지 않고 해당 레코드를 표시하는 ColdFusion 함수에서 쿼리에 변수를 보내는 페이지 매김 기법을 만드는 것입니다. 따라서 HTML 컨텐트를 잡아 내고 새로 고치지 않고 화면에 표시하는 기본적인 기능을 테스트하기 위해 ColdFusion 컴포넌트에 대한 간단한 AJAX 호출을 실행하고 HTML 컨텐트가있는 변수를 반환하고 형식이 지정된 HTML을 표시하려고합니다 내 웹 페이지의 div 태그 안에 있습니다. 이것은 cfajaxproxy를 대신 사용하는 웹에서 본 이전 예제를 기반으로합니다. 그러나 이것이 내 문제 일 수는 있지만, 단순히 그 일을하지 않는 것이 놀랍습니다.

여기 testGeneration.cfm라고하고 파일을하는 코드입니다 : 당신이 볼 수 있듯이

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
    <title>Untitled Document</title> 

    <!-- call the jQuery library --> 
    <script src="jquery.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 

     $(document).ready(function() { 
      $("#loadLink").click(function(e) { 
       e.preventDefault(); 
       $.ajax({ 
        type: "GET", 
        url: "generateInfo.cfc?method=createHTML", 
        dataType: "html", 
        success: function(message) { 
         $("#mydiv").html(message); 
        } 
       }); 
      }); 
     }); 
    </script> 
</head> 

<body> 
    <a href="" id="loadLink">Load Query</a> 
    <!-- empty div to load dynamcically generated table into --> 
    <div id="mydiv"></div> 
</body> 

이는 방법 CreateHTML와 구성 요소 GenerateInfo를 호출합니다. 내가 하이퍼 링크를 클릭 할 때

<cfcomponent displayname="Generate HTML" output="false"> 

<cffunction name="createHTML" displayname="Create HTML" description="Creates HTML to output with jQuery." access="remote" output="false" returntype="string"> 

    <!--- SET VARIABLE TO RETURN ---> 
    <cfset VARIABLES.html = ""> 

    <!--- SAVE CONTENT ---> 

    <cfsavecontent variable="VARIABLES.html"> 
    <strong>hello world</strong> 
    </cfsavecontent> 
    <!--- RETURN SAVED CONTENT ---> 
    <cfreturn VARIABLES.html> 

</cffunction> 
이제

, 그것은

안녕하세요 세계가

대신, 표시

같은 내용을 표시한다 : 여기 generateInfo.cfc의 코드는 내용은

<strong> 안녕하세요 세계 </strong >

내가 뭘 잘못하고 있니? Coldfusion 구성 요소 함수에서 리턴 변수로 보내지는 HTML을 처리하는 방법은 무엇입니까?

토니

답변

5

이 문제가 해결되는지이에 $ 아약스 전화를 변경 시도하고 참조하십시오 : 귀하의 의견을 바탕으로

$("#mydiv").load("generateInfo.cfc?method=createHTML"); 

편집

를,이 추가 시도 cffunction 태그 :

returnFormat = "plain" 
+0

$("#mydiv").html(message); 

사용할 수 있습니다. 그것은 내 문제를 해결하지 못했습니다; 렌더링 된 HTML이 아닌 HTML 코드가 계속 표시됩니다. 다른 생각? – user1100412

+0

브라우저에서 직접 generateInfo.cfc? method = createHTML에 액세스 한 다음 소스를 보면 결과가 일반 HTML 텍스트입니까 아니면 이스케이프/인코딩 된 것입니까? –

+0

흥미 ...이 소스가 될 나타나는이다

<문자 코드 = "0D"/><문자 코드 = '0A'/><문자 코드 = '안녕하세요 세계 </strong > char code = '09 '/> user1100412

2

답변이 이미 표시 되었기 때문에 나에게 똑같은 문제가 있었기 때문에 나를 돕는 방법으로 여기에 표시된 답변을 사용하고있었습니다. 그러나 표시된 대답은 도움이되지 않았습니다. 몇 시간의 좌절과 한숨을 낳습니다. cfcontentsave 태그 내에 cfoutput이 있었기 때문입니다.

아래의 대답은 대안입니다 :

cfsavecontent 나를 위해 일을 엉망으로 된 일이었다. 다음과 같이 해당 영역 내에서 cfoutput을 수행하려는 경우 :

<cfquery datasource="whatevs" name="qry_test"> 
     ... 
    </cfquery> 

    <cfsavecontent variable="VARIABLES.html"> 
     <cfoutput> 
      <strong>hello world</strong> 
      <cfloop query="qry_test"> 
       #qry_test.col1# 
      </cfloop> 
     </cfoutput> 
    </cfsavecontent> 
    <cfreturn VARIABLES.html> 
</cffunction> 

위의 코드는 작동하지 않습니다.

해결 방법 :

<cfcontent type="plain/text"> 
     <cfoutput> 
      <strong>hello world</strong> 
      <cfloop query="qry_test"> 
       #qry_test.col1# 
      </cfloop> 
     </cfoutput> 
    </cfcontent> 
</cffunction> 

참고 : returnformat 속성이 필요하지 않습니다. 어느 누구도 책임을지지 않습니다. 또한, 당신은 아직도 내가 위의 부하() 코드로 아약스() 코드를 대체하는 대신

$("#mydiv").load("generateInfo.cfc?method=createHTML");