ColdFusion AJAX - работает на CF9, а как на счет CF7?
У меня есть следующий, очень простой 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 ответа
Попробуйте использовать jsonencode и jsondeencode с CFLib.org
Включите 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)>
Есть больше аргументов, которые вы можете передать, я просто никогда не использовал их. Значения по умолчанию довольно хорошие.
Я думаю, что если вы делаете:-
<cffunction ....... output="true">
......
......
<cfoutput>#ret#</cfoutput>
</cffunction>
Затем вызовите это через GET, это должно работать.
По общему признанию не проверено.