CFセッション構造とjQueryは、サーバー上のCFとブラウザ内のjQueryという2つの異なる領域で動作します。 AjaxからColdFusion構造体を[cfc]に送信するには、セッション構造体をjson文字列としてシリアル化してから、そのjson文字列をクライアントに送信しなければなりません。ほとんどの場合、あなたはクライアントにページのレンダリングの一部としてこれを行うことになるでしょう:(実際のJSオブジェクトとして)必要に応じて
<cfoutput>var jsonStruct = #SerializeJSON(session.myStruct)#;</cfoutput>
次に、あなたのjQueryのコードからjsonStruct
変数を使用することができます。あなたには、いくつかのブラウザ咳 IE 咳以来、シリアライズを行うにはjson2.jsを含める必要があり
$.ajax({
url: "foo.cfc?method=myMethod",
dataType: "json",
data: {myStruct: JSON.stringify(jsonStruct)},
success: function (respJSON) {
jsonStruct = respJSON;
}
});
注:CFに戻ってそれを送信する必要がある場合、あなたはそのようには、JavaScript側で再びそれをシリアル化することができますはネイティブにJSON.stringify()
をサポートしていません。
更新
私はあなたがCFCからの応答を使用するためにはJavaScriptオブジェクトを更新する方法を示すために、例の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>
したがって、私はSerializeJSONを使ってCFコンポーネントに送るjsonStructを作成します。 JSON.stringifyは、CFの構造を正しいものにしますか?成功した構造を返すとき、元のページの現在のセッション構造に変更されたセッション構造を戻す方法を教えてください。 – user1100412
SerializeJSONは、CFオブジェクトを取得して文字列としてレンダリングするCF関数です。 JSON.stringifyは、javascriptオブジェクトを受け取り、それを文字列としてレンダリングするjavascript関数です。 –
CFCとjQueryのやりとりの方法を示すために答えを更新しました。 –