JSON Parse Error in jQuery when using a Coldfusion function inside a .cfm page.
May 18 |
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 forgotten 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
Tags
Ajax and ColdFusionThis entry was posted on May 18, 2019 at 4:26 AM and has received 1841 views.