ColdFusion AJAX - 适用于CF9,CF7怎么样?

时间:2012-01-26 15:34:17

标签: jquery ajax coldfusion coldfusion-9 coldfusion-7

我有以下非常简单的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>

3 个答案:

答案 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