CFAJAXPROXY
This tag provides a Javascript API to the remote CFC making it very easy to utilise server side calls. Only CFC methods that are marked as 'remote' can be exposed through this manner. The resulting Javascript is independent of any popular Javascript library. You can pass rich objects such as arrays and structures to the remote CFC with no problems. This function will do the necessary encoding and decoding on the fly.
Usage
<cfajaxproxy>
Attributes
Attribute | default | required | summary |
---|---|---|---|
ATTRIBUTECOLLECTION | A structure containing the tag attributes | ||
CFC | The path of where the CFC you wish to call is, as seen by the client (for example browser), not the server. Functions marked as 'remote' are exposed as Javascript functions | ||
JSCLASSNAME | The name of the Javascript object that will be available in the page | ||
INLINE | false | Do you wish this Javacript block to be rendered inline, or as a remote URL resource | |
SITEROOT | false | Should the path start from the site root |
Extra
This tag creates Javascript proxy objects to your server side CFC components. This makes calling remote CFC from Javascript extremely easy and straight forward. The Javascript produced by this tag is completely independent of any client side library and can safely be used along side the likes of JQuery and YUI.
<cfajaxproxy cfc="mycfc" jsclassname="jsmycfc"> <script> // Using Synchronized callback getUserRecord = function( id ) { var jsmycfcInst = new jsmycfc(); jsmycfcInst.setSyncMode(); return jsmycfcInst.getUserRecord(id); }; // Using ASynchronized callback callbackMethod = function( result ){ }; getUserRecordAsync = function( id ) { var jsmycfcInst = new jsmycfc(); jsmycfcInst.setCallbackHandler( callbackMethod ); jsmycfcInst.getUserRecord(id); }; setUserRecordAsync = function() { var jsmycfcInst = new jsmycfc(); jsmycfcInst.setCallbackHandler( callbackMethod ); jsmycfcInst.setUserRecord( { name:"Susan", age : 21, address : {street1: "House 1", street2: "Glebe Av.", town: "Glasgow" } } ); }; </script>
The following CFC would be a sample content for jsmycfc
<cfcomponent public="yes" output="false"> <cffunction name="getUserRecord" access="remote" returntype="structure"> <cfreturn {id:1, name:"susan"}> </cffunction> <cffunction name="setUserRecord" access="remote" returntype="boolean"> <cfargument name="user" type="struct" required="true" /> <!--- do something with this record ---> <cfreturn true> </cffunction> </cfcomponent>
There are a number of helper methods that come with each proxied object created.
Method Name | Description | setCallbackHandler | Takes in the Javascript function reference that will receive the callback upon completion of the result |
---|---|
setErrorHandler | Takes in the Javascript function reference that will be called should an error occur |
setAsyncMode | Sets the mode of network operation to be asynchronized. If you are expecting a result back then you should use a callback handler, otherwise you can fire'n'forget |
setSyncMode | Sets the mode of network operation to be synchronized. This means the page will wait until the server responds with the result |
setForm | The ID of the FORM that the library will automatically pull together all the values of the HTML form and post that to the server end point |
setHTTPMethod | The type of method that will be used. Defaults to GET but can be POST. There will always be an anti-cache busting token added to each request to prevent browser caching |