2012-09-06 4 views
2

원격 CFC로 AJAX 호출을 보내고 JSON으로 데이터를 다시 가져 오지만, 추측 할 필요없이 데이터를 출력하는 데 문제가 있습니다. 다음과 같은 하드 코드 된 인덱스 값을 갖는 구조체 인덱스 : $ ('# result') .val (obj.DATA [0] [3]);AJAX 호출에서 반환 된 JSON 데이터로 쉽게 작업하기 위해 Coldfusion이 필요합니다.

CFC에서 쿼리를 변경하면 [3]과 같은 인덱스를 하드 코딩하면 AJAX 결과를 변경해야합니다. 그래서 colmn 이름으로 반환 된 데이터를 참조하고 싶지만 알아낼 수는 없습니다. 내 AJAX 및 원격 CFC의 결과는 다음과 같습니다

$.ajax({ 
      url: '/app/components/MailingsReport.cfc', 
      //POST method is used 
      type: "POST", 
      //pass the data 
      data: { 
       method: "getCreativeByID", 
       creativeID: $('#hdnCreativeID').val(), 
       datasource: "shopping_cart", 
     queryformat: "column" 
       }, 
      success: function(response){ 
       var obj = $.trim(response); 
     var obj = jQuery.parseJSON(obj); 
       //alert("response"); 
       $('#txtSubject').val(obj.COLUMNS["SUBJECT"][0]); 
       } 
      } 

     }); 

CFC :

<!---gets the data for the creative---> 
    <cffunction name="getCreativeByID" returntype="any" returnformat="JSON" access="remote" output="No"> 
     <cfargument name="creativeID" required="Yes" type="numeric" /> 
     <cfargument name="datasource" required="Yes" type="string" /> 

     <!--- Select creatives and {clickurl} ---> 
     <cfquery name="qGetCreativeData" datasource="#arguments.datasource#"> 
      exec sp_get_email_creative @creativeid = #arguments.creativeID# 
     </cfquery> 

     <cfreturn qGetCreativeData /> 

    </cffunction> 

결과 :

This is the result from the CFC

이 어떤 도움을 주시면 감사하겠습니다! 감사.

+0

하나의 옵션은 returnformat을 텍스트로 변경하고 JSON을 직접 포맷하는 것입니다. 나는 coldfusion이주는 대문자 키가 마음에 들지 않기 때문에 보통 그렇게한다. 데이터를 객체의 배열로 반환합니다. –

답변

0

당신은 또한 열이 JSON에 쿼리를 반환 할 수 있습니다 당신이 그것을 필요로하는 경우에

$('#result').val(obj.DATA[0][ obj.COLUMNS.indexOf('Creativename') ]); 

이 페이지는 직접 지원하지 않는 브라우저에 배열 프로토 타입에 같이 IndexOf를 추가하는 방법에 대한 지침을 가지고 SerializeJSON (data, true)을 사용하여 각 데이터 행의 키로 이름을 지정합니다. 당신의 CFC에 그래서, 당신은 지금 반환의 데이터 부분에 루프 할 수 있어야합니다 자바 스크립트 코드에서

을 returnformat = "JSON"를 제거 및 교체 JSON 문자열을 행 단위로 표시하고 열 이름별로 값을 참조하십시오.