我有以下非常简单的CFC,我用jQuery调用。它在CF9上本地工作正常,但客户端在CF7上,并且CF7中的cffunction中没有returnformat属性。我怎样才能做到这一点?我尝试在返回的结构上使用SerializeJSON(),但这不起作用。感谢。
<cfsetting showdebugoutput="false">
<cffunction name="getPart" access="remote" returntype="any" returnformat="JSON">
<cfargument name="myarg" type="string" required="yes">
<cfset var ret = StructNew()>
<cfset ret.success = true>
<cftry>
<cfquery name="ret.part" datasource="dsn">
(query goes here)
</cfquery>
<cfset ret.recordcount = ret.part.recordcount>
<cfcatch type="any">
<cfset ret.success = false>
<cfset ret.error = cfcatch>
</cfcatch>
</cftry>
<cfreturn ret>
</cffunction>
答案 0 :(得分:0)
包含toJSON.cfc,然后使用其中的方法序列化您的结构。
<cfset JSON = CreateObject( "component", "toJSON" )>
<cfreturn JSON.structToJSON(ret)>
我从未使用过toJSON.cfc;我一直使用较旧的JSON.cfc,但我找不到它的链接。我不确定它是否可以处理包含查询的结构,我想你所能做的就是尝试它。
编辑:这是我引用的JSON.cfc:http://www.epiphantastic.com/cfjson/downloads.php
简单地做:
<cfset JSON = CreateObject( "component", "JSON" )>
<cfreturn JSON.encode(ret)>
您可以传递更多参数,我从未使用它们。默认值非常好。
答案 1 :(得分:0)
我想如果你这样做: -
<cffunction ....... output="true">
......
......
<cfoutput>#ret#</cfoutput>
</cffunction>
然后通过GET调用它应该可以工作。
不可否认,未经测试。
答案 2 :(得分:-1)
尝试使用来自CFLib.org的jsonencode和jsondeencode