Late at night, I put a function inside a .cfm template and tried to consume it from Ajax, but I received a json parse error that was displayed in Chrome's console when trying to invoke a function within a .cfm page. I had forgot that ajax functions should not be consuming a .cfm page, and placed the exact same function within a component with a .cfc extension, and the issue went away. When a function is within a component with the access remote argument, ColdFusion will autogenerate a web services stub, but it does not do this within a .cfm page. If you receive a json parse error using logic that is known to create a valid json object within a .cfm page, try putting the same code in a .cfc component and consume it there. It may solve this parse error for you as well. The code below has a 'proxyControllerUrl' variable that was initially using a template with a .cfm extension, and it failed. However, when I put the same function within a .cfc extension, it worked.

view plain about
1function getAllThemeSettingsFromIniStore(themeId){
3    // Get all of the theme properties stored in the ini configuration file.
4    $.ajax({
5        type: "get",
6        url: "<cfoutput>#application.proxyControllerUrl#?</cfoutput>method=getAllThemeSettingsFromIniStore",//Works with a .cfc component, fails when the method is inside a .cfm template.
7        data: { // method and the arguments
8            themeId: themeId
9        },
10        dataType: "json",
11        cache: false,
12        success: function (data){
13            // Pass the data to the getAllThemeSettingsResult function.
14            getAllThemeSettingsResult(data);
15        },
16        error: function(xhr, textStatus, error){
17            console.log(xhr.statusText);//Parse error shows up here when inside a .cfm template.
18            console.log(textStatus);
19            console.log(error);
20        }
21    });
22}//... function