Data types may be different between ColdFusion and jQuery.
May 18
by Gregory Alexander Ajax and ColdFusion

The component and the method are the same, but the evaluation of the return value is different between ColdFusion and jQuery. Be aware that if you don't declare and set the datatype of the structure elements independently; the datatypes can be interpreted differently depending upon where they are being evaluated.
This entry was posted on May 18, 2019 at 7:13 PM and has received 553 views.
JSON Parse Error in jQuery when using a Coldfusion function inside a .cfm page.
May 18
by Gregory Alexander Ajax and ColdFusion

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.
function getAllThemeSettingsFromIniStore(themeId){
// Get all of the theme properties stored in the ini configuration file.
$.ajax({
type: "get",
url: "<cfoutput>#application.proxyControllerUrl#?</cfoutput>method=getAllThemeSettingsFromIniStore",//Works with a .cfc component, fails when the method is inside a .cfm template.
data: { // method and the arguments
themeId: themeId
},
dataType: "json",
cache: false,
success: function (data){
// Pass the data to the getAllThemeSettingsResult function.
getAllThemeSettingsResult(data);
},
error: function(xhr, textStatus, error){
console.log(xhr.statusText);//Parse error shows up here when inside a .cfm template.
console.log(textStatus);
console.log(error);
}
});
}//... function
This entry was posted on May 18, 2019 at 4:26 AM and has received 909 views.