Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8250685
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T23:58:42+00:00 2026-06-07T23:58:42+00:00

I am working on a ColdFusion 8 training application where I’m making some AJAX

  • 0

I am working on a ColdFusion 8 training application where I’m making some AJAX requests (without any libraries such as jQuery) to support a very basic CRUD application.
The high level architecture includes a CFM view, a CFC with remote access methods which receive the AJAX requests, and a CFC which acts as a model and has all of the database queries.
For just retrieving data that doesn’t require any sort of bind variables (like getting all rows from the table), the AJAX queries are working fine. When I try to post anything to the CFC middle layer, however, I’m getting errors about the values I’m looking for being undefined in the Form scope (which from my understanding is where post parameters will be stored). I even dissected the requests with Tamper Data and verified that the names and values of the post parameters are as I expect them to be.

Here is an example of the JS AJAX requests:

    function addLocation(locToAdd) {
            var thisAccess = new AccessStruct("POST", "jsontest.cfc?method=addNewLocation", getLocations, "newLoc=" + JSON.stringify(locToAdd));
            accessWrapper("addLoc", thisAccess);

    function accessWrapper(action, accessDef) {
            var ajaxRequest = new XMLHttpRequest();
            var nextStep;
            if (action != "getLocs") {
                nextStep = getLocations;
            } else {
                nextStep = buildTable;
            }

            ajaxRequest.onreadystatechange = function() { // using a closure so that the callback can
                if (ajaxRequest.readyState == 4) {        //   examine the request and nextStep
                    if (ajaxRequest.status == 200) {
                        if (nextStep != null) {
                            nextStep(ajaxRequest);
                        }
                        return true;
                    } else {
                        alert("Request Could Not Be Completed; Errors On Page");
                        return false;
                    }
                }
            }
            ajaxRequest.open(accessDef.method, accessDef.url, true);
            ajaxRequest.send("newLoc=" + accessDef.params);
    }


    function Loc(locCode, parLocCode, name, addrL1, addrL2,
                            city, stateProv, postal, locTypeCode) {
            this.locCode     = locCode;
            this.parLocCode  = parLocCode;
            this.name        = name;
            this.addrL1      = addrL1;
            this.addrL2      = addrL2;
            this.city        = city;
            this.stateProv   = stateProv;
            this.postal      = postal;
            this.locTypeCode = locTypeCode;
        }

        function AccessStruct(method, url, nextStep, params) {
            this.method   = method;
            this.url      = url;
            this.nextStep = nextStep;
            this.params   = params;
        }

Essentially what’s happening on the page is that a table populated by all the location (loc) records is being rendered for a “user”. There is a form to add a new user, and when they click the add button, a Loc structure is created containing the information they entered and is passed to the addLocation function. This creates an Access structure, which will include the request URL, method, the name of a function to act as a callback, and any post parameters. This is all passed into the accessWrapper function, which will create the XMLHttpRequest and process the AJAX request. I used a closure for the onreadystatechange callback function so that it could be aware of the XMLHttpRequest object and the callback function defined in the Access structure (this callback function will be generally be used to refresh the view table after a record is added, deleted, or edited).

Here is the cffunction within the middle-layer CFC where the problem is being reported from. I won’t bother to post the DAO CFC as that has been tested elsewhere and is not even being reached during this process (because it’s failing at the middle [or controller] level)

 <cffunction name="addNewLocation" output="false" access="remote">
    <cfset var deserializedLocation = "">
    <cfscript>
        deserializedLocation = DeserializeJSON(Form.newLoc);
    </cfscript> 
    <cfobject component="locationDAO" name="locationDAOObj">
    <cfinvoke
        component="#locationDAOObj#"
        method="addLocation">
        <cfinvokeargument name="code" value="#deserializedLocation.locCode#">
        <cfinvokeargument name="parentCode" value="#deserializedLocation.parLocCode#">
        <cfinvokeargument name="name" value="#deserializedLocation.name#">
        <cfinvokeargument name="addr1" value="#deserializedLocation.addrL1#">
        <cfinvokeargument name="addr2" value="#deserializedLocation.addrL2#">
        <cfinvokeargument name="city" value="#deserializedLocation.city#">
        <cfinvokeargument name="stateProv" value="#deserializedLocation.stateProv#">
        <cfinvokeargument name="postal" value="#deserializedLocation.postal#">
        <cfinvokeargument name="locationType" value="#deserializedLocation.locTypeCode#">
    </cfinvoke>
</cffunction>

The error in the request response is:
500 Element NEWLOC is undefined in FORM

Like I said before, I’ve checked the request in Tamper Data, and it looks fine there. Thanks in advance for any help you great folks might be able to offer!

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T23:58:45+00:00Added an answer on June 7, 2026 at 11:58 pm

    There absolutely is a FORM scope when you do an Ajax post to a CFC.

    This example POSTs form data via Ajax to a CFC function with no arguments and returns the JSON format of the FORM scope. Yes, you should have arguments to document, specify required/not required and data type, but they’re not mandatory.

    Is there any reason you aren’t using jQuery? It would probably make your life much easier.

    There must be something wrong with how you’re sending the form data to the Ajax call. If you use FireBug to watch your Ajax calls, you can see the POSTed parameters.

    HTML

    <html>
        <head>
            <title>Ajax POST to CFC</title>
            <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
            <script type="text/javascript" src="test.js">
        </head>
        <body>
    
            <form id="foo" action="" method="post">
    
                <input type="text" id="a" name="a" value="Hello" />
                <br />
                <input type="text" id="b" name="b" value="Goodbye" />
                <br />
    
                <textarea id="data" cols="30" rows="10" disabled="true"></textarea>
                <br />
                <input type="button" id="btnSubmit" value="Do Ajax!" />
    
            </form>
    
        </body>
    
    </html>

    JavaScript

    $(document).ready(function() {
        $('#btnSubmit').on('click', function() {
            $.ajax({
                asynch : true,
                type : 'POST',
                dataType : 'json',
                url : 'test.cfc?method=testing&returnformat=json',
                data : {
                    a : $('#a').val(),
                    b : $('#b').val()
                },
                success : function(data, textStatus) {
                    $('#data').val(JSON.stringify(data));
                }
            });
        });
    });

    CFC

    <cfcomponent>
        <cffunction name="testing" access="remote" output="false" returntype="string">
            <cfreturn serializeJSON( form ) />
        </cffunction>> 
    </cfcomponent>


    Old School, no jQuery, just plain ol’ JavaScript

    I found a simple example of an Ajax POST without jQuery here:
    http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

    HTML
    Remove the jQuery SCRIPT tag, change the other SCRIPT to test-nojq.js and change the submit button to add an onclick event.

    <input type="button" id="btnSubmit" value="Do Ajax!" onclick="doSubmit();" />

    JavaScript: test-nojq.js

    function doSubmit(){
        var http = new XMLHttpRequest();
        var url = "test.cfc";
        var params = "method=testing&returnformat=json";
            params += "&a=" + document.getElementById('a').value;
            params += "&b=" + document.getElementById('b').value;
        http.open("POST", url, true);
        //Send the proper header information along with the request
        http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http.setRequestHeader("Content-length", params.length);
        http.setRequestHeader("Connection", "close");
        http.onreadystatechange = function() {//Call a function when the state changes.
            if(http.readyState == 4 && http.status == 200) {
                document.getElementById('data').value = http.responseText;
            }
        }
        http.send(params);
    }

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have been working on a BlackBerry application that consumes web services from ColdFusion
ASP.NET Application I am having some confusion with showing images. IE is fully working
I'm working on a Coldfusion project where I need to pull some information from
I am working on an application where all user authentication happens in a ColdFusion
I'm working on a Fusebox application using Coldfusion, and there is a fusebox.xml file
I've been thrown into ColdFusion for a very simple assignment. The application has some
I am using ColdFusion 8.0.1 I am working on an existing application that has
I am currently working on converting a ColdFusion website, using Fusebox framework, to PHP.
I am working to build a menu in coldfusion based on xml. current working
I'm working on a site that still has a lot of scripts in ColdFusion.

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.