FW/1 seems to be oriented to returning complete web pages what if JSON data is needed? A typical layout looks like:
As of FW/1 2.2, you can call:
variables.fw.renderData( "json", result );
in your controller and it will do what you want.
I have used code that overrides the onMissingView()
method of Framework.cfc.
I wrap my response up in a variable named rc.json
then use code similar to this in my Application.cfc.
function onMissingView( rc ){
if( structKeyExists( rc, 'json' ){
var response = getPageContext().getresponse()
response.setContentType( 'application/json' );
return serializeJSON( rc.json );
}
else{
//we need this to fire off valid onMissignView error.
raiseException( "FW1.viewNotFound", "Unable to find a view for '#request.action#' action.", " '#request.missingView#' does not exist.");
}
}
I use other logic to do a cfdump
of rc.json
when request is not an AJAX request. But this is scaled down to bare minimum.
This will do it
<!--- Load all variables into response rather than just rc --->
<cfparam name="rc.response" default="#structNew()#">
<cfparam name="rc.response.status" default="OK">
<!--- Stop layouts from cascading --->
<cfset request.layout = false>
<cfsetting showDebugOutput="No">
<cfheader name="Content-Type" value="application/json" />
<cfoutput>#SerializeJSON(rc.response)#</cfoutput>