Bueno, la estructura de sesión CF y jQuery funcionan en dos esferas diferentes: CF en el servidor y jQuery en el navegador. Para "enviar esa estructura ColdFusion a un [cfc] ..." desde Ajax, tendrá que haber serializado la estructura de la sesión como una cadena json y luego transmitir esa cadena json al cliente de alguna manera. Lo más probable es que usted querrá hacer esto como parte de la representación de la página al cliente:
<cfoutput>var jsonStruct = #SerializeJSON(session.myStruct)#;</cfoutput>
continuación, puede utilizar la variable jsonStruct
a partir del código de jQuery, según sea necesario (como un objeto real JS). Cuando tenga que enviarlo de vuelta a CF, puede serializar de nuevo en el lado Javascript, así:
$.ajax({
url: "foo.cfc?method=myMethod",
dataType: "json",
data: {myStruct: JSON.stringify(jsonStruct)},
success: function (respJSON) {
jsonStruct = respJSON;
}
});
en cuenta que debe incluir json2.js hacer la serialización, ya que algunos navegadores tos IE tos no es compatible con JSON.stringify()
de forma nativa.
actualización
He actualizado el ejemplo de código jQuery para mostrar cómo se puede actualizar el objeto javascript para usar la respuesta de la CFC. Para que funcione correctamente, el CF tendrá que ser algo como esto:
<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>
así que utilizo para crear SerializeJSON que jsonStruct para enviar al componente CF. JSON.stringify lo convierte en una estructura en CF correcta? Cuando devuelvo la estructura al éxito, ¿cómo vuelvo a asignar la estructura de sesión modificada a la estructura de sesión actual en la página original? – user1100412
SerializeJSON es una función CF que toma un objeto CF y lo representa como una cadena. JSON.stringify es una función de JavaScript que toma un objeto javascript y lo representa como una cadena. –
He actualizado la respuesta para mostrar cómo va y viene entre CFC y jQuery. –