ColdFusion AJAX - работает на CF9, как на счет CF7? - PullRequest
2 голосов
/ 26 января 2012

У меня есть следующий, очень простой CFC, который я вызываю с помощью jQuery.Локально работает на CF9, но клиент на CF7, и в cfunction нет атрибута 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 голосов
/ 26 января 2012

Попробуйте использовать jsonencode и jsondeencode с CFLib.org

0 голосов
/ 26 января 2012

Я думаю, что если вы сделаете: -

<cffunction ....... output="true">
    ......
    ......
    <cfoutput>#ret#</cfoutput>
</cffunction>

Затем вызовите это через GET, оно должно работать.

По общему признанию, не проверено.

0 голосов
/ 26 января 2012

Включите 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)>

Есть больше аргументов, которые вы можете передать, я просто никогда их не использовал.Значения по умолчанию довольно хорошие.

...