Vâng, cấu trúc phiên CF và jQuery hoạt động trong hai lĩnh vực khác nhau - CF trên máy chủ và jQuery trong trình duyệt. Để "gửi cấu trúc Coldfusion đó tới một [cfc] ..." từ Ajax, bạn sẽ phải tuần tự hóa cấu trúc phiên làm chuỗi json và sau đó truyền chuỗi json đó tới máy khách bằng cách nào đó. Nhiều khả năng, bạn sẽ muốn làm điều này như là một phần của đồ họa của trang để khách hàng:
<cfoutput>var jsonStruct = #SerializeJSON(session.myStruct)#;</cfoutput>
Sau đó, bạn có thể sử dụng các biến jsonStruct
từ mã jQuery của bạn khi cần thiết (như là một đối tượng JS thực). Khi bạn cần phải gửi nó trở lại CF, bạn có thể serialize nó một lần nữa ở phía bên Javascript, giống như sau:
$.ajax({
url: "foo.cfc?method=myMethod",
dataType: "json",
data: {myStruct: JSON.stringify(jsonStruct)},
success: function (respJSON) {
jsonStruct = respJSON;
}
});
Lưu ý rằng bạn nên bao gồm json2.js để làm serialization, vì một số trình duyệt ho IE ho không hỗ trợ JSON.stringify()
nguyên bản.
Cập nhật
Tôi đã cập nhật mã jquery ví dụ cho thấy làm thế nào bạn có thể cập nhật các đối tượng javascript để sử dụng phản hồi từ CFC. Để hoạt động bình thường, CF của bạn sẽ cần phải trông giống như sau:
<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>
Nguồn
2012-03-02 22:38:16
Vì vậy, tôi sử dụng SerializeJSON để tạo jsonStruct đó để gửi đến thành phần CF. JSON.stringify làm cho nó một cấu trúc trong CF đúng không? Khi tôi trả về cấu trúc trở lại thành công, làm cách nào để gán cấu trúc phiên đã thay đổi trở lại cấu trúc phiên hiện tại trên trang gốc? – user1100412
SerializeJSON là một hàm CF có đối tượng CF và hiển thị nó dưới dạng một chuỗi. JSON.stringify là một hàm javascript nhận một đối tượng javascript và hiển thị nó dưới dạng một chuỗi. –
Tôi đã cập nhật câu trả lời để cho thấy cách bạn đi qua lại giữa CFC và jQuery. –