g_form.getParameter is not a function
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-08-2018 09:10 AM
I am going through testing for Kingston to make sure all items dont get javascript errors. I am getting an error for an error that worked on the CMS but not Service Portal. I am not a developer so I am not sure how to replace this code for it to work.
Build- Kingston
Catalog Client Script - OnLoad
Purpose of script...custom fields are on the catalog item for IT Risk approval or funding required. The script checks that and populates a message if it is true for that item.
I get the following Error in Developer Tools on Google
js_includes_sp.jsx?v=04-25-2018_0907&lp=Tue_May_08_11_36_12_PDT_2018&c=17_294:67075 (g_env) [SCRIPT:EXEC] Error while running Client Script "get Cat Item control fields": TypeError: g_form.getParameter is not a function
function onLoad() {
var myItem = g_form.getParameter("sysparm_id");
var ga = new GlideAjax('SoftwareReqControlUtil');
ga.addParam('sysparm_name', 'getSoftwareControlFields');
ga.addParam('sysparm_item', myItem);
ga.getXML(getItemSelected);
}
function getItemSelected(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
//g_form.addInfoMessage(answer); //JSON String
answer = answer.evalJSON(); //Transform the JSON string to an object
g_form.setValue('funding_required', answer[0].fundingReq);
if (answer[0].fundingReq == 'true') {
g_form.addInfoMessage('The selected Software requires funding');
}
g_form.setValue('it_risk_review_required', answer[0].itRisk);
if (answer[0].itRisk == 'true') {
g_form.addInfoMessage('The selected Software requires IT RISK Review');
}
g_form.setValue('standard_software', answer[0].standard);
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-08-2018 09:27 AM
I'm wondering if that isn't this problem rearing its head again.
Couple of different ways you can do this, documented in: https://community.servicenow.com/community?id=community_question&sys_id=839ac32ddb5cdbc01dcaf3231f9619e2 and https://hi.service-now.com/kb_view.do?sysparm_article=KB0547171.
g_form should be your major issue there. For whatever reason, some parts of that don't like to play well with the Service Catalog / Service Portal. From previous situations, g_form.setValue should be fine.
Try changing your code to:
function onLoad() {
var form = typeof g_sc_form != "undefined" ? g_sc_form : g_form;
var myItem = form.getParameter("sysparm_id");
var ga = new GlideAjax('SoftwareReqControlUtil');
ga.addParam('sysparm_name', 'getSoftwareControlFields');
ga.addParam('sysparm_item', myItem);
ga.getXML(getItemSelected);
}
function getItemSelected(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
//g_form.addInfoMessage(answer); //JSON String
answer = answer.evalJSON(); //Transform the JSON string to an object
g_form.setValue('funding_required', answer[0].fundingReq);
if (answer[0].fundingReq == 'true') {
g_form.addInfoMessage('The selected Software requires funding');
}
g_form.setValue('it_risk_review_required', answer[0].itRisk);
if (answer[0].itRisk == 'true') {
g_form.addInfoMessage('The selected Software requires IT RISK Review');
}
g_form.setValue('standard_software', answer[0].standard);
}
quick edit: If after doing that, the second function doesn't work, a quick fix to try would be (shown below). Don't know if you necessarily need to declare form once in each function, so the second declaration may be able to be just commented out.
function onLoad() {
var form = typeof g_sc_form != "undefined" ? g_sc_form : g_form;
var myItem = form.getParameter("sysparm_id");
var ga = new GlideAjax('SoftwareReqControlUtil');
ga.addParam('sysparm_name', 'getSoftwareControlFields');
ga.addParam('sysparm_item', myItem);
ga.getXML(getItemSelected);
}
function getItemSelected(response) {
var form = typeof g_sc_form != "undefined" ? g_sc_form : g_form;
var answer = response.responseXML.documentElement.getAttribute("answer");
//form.addInfoMessage(answer); //JSON String
answer = answer.evalJSON(); //Transform the JSON string to an object
form.setValue('funding_required', answer[0].fundingReq);
if (answer[0].fundingReq == 'true') {
form.addInfoMessage('The selected Software requires funding');
}
form.setValue('it_risk_review_required', answer[0].itRisk);
if (answer[0].itRisk == 'true') {
form.addInfoMessage('The selected Software requires IT RISK Review');
}
form.setValue('standard_software', answer[0].standard);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-08-2018 09:34 AM
Im still getting
js_includes_sp.jsx?v=04-25-2018_0907&lp=Tue_May_08_11_36_12_PDT_2018&c=17_294:67075 (g_env) [SCRIPT:EXEC] Error while running Client Script "get Cat Item control fields": TypeError: form.getParameter is not a function

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-08-2018 09:56 AM
Alright, found something else along the same lines.
URL of where I'm pulling this from: https://community.servicenow.com/community?id=community_blog&sys_id=ec3eea6ddbd0dbc01dcaf3231f9619d6
function onLoad() {
//Use the 'getParameterValue' function below to get the parameter values from the URL
var myItem = getParameterValue('sysparm_id');
var ga = new GlideAjax('SoftwareReqControlUtil');
ga.addParam('sysparm_name', 'getSoftwareControlFields');
ga.addParam('sysparm_item', myItem);
ga.getXML(getItemSelected);
}
function getParameterValue(name) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(top.location);
if (results == null) {
return "";
} else {
return unescape(results[1]);
}
}
function getItemSelected(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
//g_form.addInfoMessage(answer); //JSON String
answer = answer.evalJSON(); //Transform the JSON string to an object
g_form.setValue('funding_required', answer[0].fundingReq);
if (answer[0].fundingReq == 'true') {
g_form.addInfoMessage('The selected Software requires funding');
}
g_form.setValue('it_risk_review_required', answer[0].itRisk);
if (answer[0].itRisk == 'true') {
g_form.addInfoMessage('The selected Software requires IT RISK Review');
}
g_form.setValue('standard_software', answer[0].standard);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎06-08-2018 11:31 AM
still failing, it is the one line of code
var myItem = g_form.getParameter("sysparm_id");
that is throwing the fit, i dont believe it is compatible with service portal