Bene, la struttura della sessione CF e jQuery operano in due diversi ambiti: CF sul server e jQuery nel browser. Per "inviare quella struttura ColdFusion a un [cfc] ..." dall'Ajax, dovrai serializzare la struttura della sessione come una stringa json e poi trasmettere la stringa json al client in qualche modo. Molto probabilmente, si vorrà fare questo come parte del rendering della pagina per il cliente:
<cfoutput>var jsonStruct = #SerializeJSON(session.myStruct)#;</cfoutput>
quindi è possibile utilizzare la variabile jsonStruct
dal codice jQuery, se necessario (come un oggetto reale JS). Quando è necessario inviare di nuovo a CF, è possibile serializzare nuovamente sul lato Javascript, in questo modo:
$.ajax({
url: "foo.cfc?method=myMethod",
dataType: "json",
data: {myStruct: JSON.stringify(jsonStruct)},
success: function (respJSON) {
jsonStruct = respJSON;
}
});
noti che si dovrebbe includere json2.js di fare la serializzazione, dal momento che alcuni browser tosse IE tosse non supportano JSON.stringify()
in modo nativo.
Aggiornamento
Ho aggiornato il codice jQuery esempio per mostrare come è possibile aggiornare l'oggetto JavaScript per utilizzare la risposta dal CFC. Per funzionare correttamente, il tuo CF dovrà assomigliare a questo:
<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>
fonte
2012-03-02 22:38:16
Quindi uso SerializeJSON per creare quel jsonStruct da inviare al componente CF. JSON.stringify lo rende una struttura in CF corretta? Quando restituisco la struttura nel successo, come posso assegnare la struttura della sessione modificata alla struttura della sessione corrente nella pagina originale? – user1100412
SerializeJSON è una funzione CF che accetta un oggetto CF e lo esegue come stringa. JSON.stringify è una funzione javascript che accetta un oggetto javascript e lo esegue come stringa. –
Ho aggiornato la risposta per mostrare come si va avanti e indietro tra CFC e jQuery. –