2012-03-02 4 views
6

데이터 구조 인 ColdFusion 세션 변수가 있습니다. 내 목표는 Ajax를 통해 두 가지 중 하나를 수행하는 jQuery를 호출을 실행하는 것입니다JQuery를 통한 ColdFusion 구조 전달 및 반환

  1. 는 ColdFusion 컴포넌트 메소드의 ColdFusion 구조가 새로 만든 캐릭터와 그 구조의 요소를 갱신하도록 전송을하고, 동일한 구조의 것을 반환 뒤로.

    또는

    이 새로운 캐릭터를 생성하는 문자열을 반환 ColdFusion 컴포넌트 방법을 실행하고, 할당 한 Ajax 호출 후 동일한 ColdFusion에서 세션 구조 요소에 새로운 캐릭터.

나는 쉽게 생각할 수 있지만 몇 가지 문제가있었습니다. 아무도 내가 뭘해야하는지 알지 못해?

답변

10

음, CF 세션 구조와 jQuery는 서버의 CF와 브라우저의 jQuery의 두 가지 영역에서 작동합니다. Ajax에서 ColdFusion 구조체를 [cfc] ...로 보내려면 세션 구조를 json 문자열로 직렬화 한 다음 그 json 문자열을 클라이언트에 전송해야합니다. 대부분의 경우, 당신은 클라이언트 페이지의 렌더링의 일환으로이 작업을 수행 할 수 있습니다 : 필요에 따라

<cfoutput>var jsonStruct = #SerializeJSON(session.myStruct)#;</cfoutput> 

그런 다음 당신이 (진짜 JS 개체로) 당신의 jQuery 코드에서 jsonStruct 변수를 사용할 수 있습니다. 다시 CF로 전송해야하는 경우, 당신은과 같이, 자바 스크립트 측에서 다시 직렬화 할 수 있습니다 : 당신이 json2.js을 포함해야

$.ajax({ 
    url: "foo.cfc?method=myMethod", 
    dataType: "json", 
    data: {myStruct: JSON.stringify(jsonStruct)}, 
    success: function (respJSON) { 
     jsonStruct = respJSON; 
    } 
}); 

참고 직렬화를 수행하기 위해, 일부 브라우저 기침 IE 기침 때문에은 기본적으로 JSON.stringify()을 지원하지 않습니다.

난 당신이 CFC의 응답을 사용하는 자바 스크립트 객체를 업데이트 할 수 있습니다 방법을 보여 예제 jQuery 코드를 업데이트 한

업데이트. 제대로 작동하려면 CF가 다음과 같이 표시되어야합니다.

<cffunction name="myMethod" access="remote" returnFormat="json"> 
    <cfargument name="myStruct" type="string"> 

    <cfset var realStruct = DeserializeJSON(arguments.myStruct)> 

    <cfset session.myStruct = realStruct><!--- or whatever you want to do with it at this point ---> 

    <cfreturn session.myStruct> 
</cffunction> 
+0

그래서 저는 jsonStruct를 사용하여 CF 구성 요소로 전송합니다. JSON.stringify는 CF로 구조를 수정합니까? 성공시 구조를 반환 할 때 변경된 세션 구조를 원래 페이지의 현재 세션 구조에 다시 할당하려면 어떻게해야합니까? – user1100412

+0

SerializeJSON은 CF 객체를 가져 와서 문자열로 렌더링하는 CF 함수입니다. JSON.stringify는 javascript 객체를 사용하여 문자열로 렌더링하는 javascript 함수입니다. –

+0

저는 CFC와 jQuery간에 어떻게 돌아가는지 보여주는 답변을 업데이트했습니다. –