CF 8 Ajax with CFSELECT BIND

I love the new AJAX functionality in ColdFusion 8, but I am running into problems using it.

As mentioned in Ben Forta’s blog you can use the BIND= attribute on a CFSELECT tag to populate the data from a CFC using AJAX.

The problem I had was that even using Ben’s samples I could not get the data to populate.  After alot of tinkering I finally got it to work by removing the onRequest() method from Application.cfc.  Why this affects this functionality is a mystery to me.  Really for the application I’m working on it’s not a big problem but on other projects it could be.

My second part of the problem is that I have a cfc directory that is OUTSIDE of the application’s root directory.  For example:

/website_root
/components
/images

Then I map /cacfc to /components and reference my cfc’s by prepending cacfc to the component IE. cacfc.database.data.   This works great as I can share components among applications easily enough.  But when I call the cfc with the bind attribute of the CFSELECT, ColdFusion looks for the cfc in the root directory.   Here’s an example:

1
2
3
4
5
6
<cfselect name="school_id"
bind="cfc:cfc.school.getSchoolsInCity(state_code={school_state_code},county_number={county},location_city={schoolcity})"
value="school_id"
display="school_name"
required="true"
class="formField"/>

The AJAX debugger looks for the cfc /school.cfc which obviously doesn’t exist.   If I move the cfc to a directory under the web root (ie /cfc) it works.

Either I am doing something terribly wrong or these are 2 bugs in CF8.

Update from Ben on his Blog:

Matt,

The mapped directory problem is a known one, and I believe is to be addressed in the updater due out shortly.

The onRequest() issues sounds sounds like the same limitation with Web Services and more, and is documented as a restriction.

— Ben
# Posted By Ben Forta | 1/30/08 10:49 AM