How to pass values from script include to client script?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-07-2019 07:50 AM
I'm trying to get the Risk by using Script Include and Client Script.
Risk was already calculated in the table I just want the exact risk to be retrieved on that table based on the selected recoverabilty, impact, deployment etc.
I also try to put the answer on alert() function but it says the value of answer is null.
Here's my scripts:
1. Script Include
var RiskLookup = Class.create();
RiskLookup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getApplicationRisk: function()
{
var types = this.getParameter('sysparm_changetype');
var businessCIs = this.getParameter('sysparm_business');
var serverCIs = this.getParameter('sysparm_server');
var impacts = this.getParameter('sysparm_impact');
var deployments = this.getParameter('sysparm_deploy');
var recovers = this.getParameter('sysparm_recover');
// if(types == 'Application'){
var businessCI = new GlideRecord('cmdb_ci_service');
businessCI.addQuery('name', businessCIs);
businessCI.query();
while(businessCI.next())
{
var type = new GlideRecord('u_risk_calculation');
type.addQuery('u_change_type', types);
type.addQuery('u_business_criticality', businessCI.busines_criticality);
type.addQuery('u_impact', impacts);
type.addQuery('u_deployment', deployments);
type.addQuery('u_recoverability', recovers);
type.query();
while(type.next()){
var appRiskCalc = {};
appRiskCalc.risk_app = type.u_risk.getDisplayValue() || '';
var data = new global.JSON().encode(appRiskCalc);
return data;
}
}
//}
},
//type: 'RiskLookup'
});​
2. Client Script:
function onChange(control, oldValue, newValue, isLoading)
{
var type = g_form.getValue('u_change_type');
var businessCI = g_form.getValue('u_business_ci');
var serverCI = g_form.getValue('u_related_ci');
var impact_scope = g_form.getValue('impact');
var deployment = g_form.getValue('u_deployment');
var recoverability = g_form.getValue('u_recoverability');
if(type && businessCI && serverCI && impact_scope && deployment && recoverability ){
var ga = new GlideAjax('RiskLookup');
ga.addParam('sysparm_name','getApplicationRisk');
ga.addParam('sysparm_changetype', type);
ga.addParam('sysparm_business', businessCI);
ga.addParam('sysparm_server', serverCI);
ga.addParam('sysparm_impact', impact_scope);
ga.addParam('sysparm_deploy', deployment);
ga.addParam('sysparm_recover', recoverability);
ga.getXML(getInfo);
}
function getInfo(response)
{
var answer = response.responseXML.documentElement.getAttribute("answer");
answer = JSON.parse(answer);
alert(answer);
g_form.setValue('risk',answer.risk_app);
}
}
- Labels:
-
Best Practices
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-07-2019 09:48 AM
David, while I do agree with you that it is better practice to use JSON.stringify() because it is native JS, new global.JSON().encode() should still work in this case. Since none of the logging statements were hit in the script include, something must be preventing the AJAX call from reaching the script include code.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-07-2019 12:14 PM
//Can you try this script include and client script. You commented out type in the SI.
type: 'RiskLookup'
//The client script calls a test function to return a message
var RiskLookup = Class.create();
RiskLookup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getApplicationRisk: function() {
var types = this.getParameter('sysparm_changetype');
var businessCIs = this.getParameter('sysparm_business');
var serverCIs = this.getParameter('sysparm_server');
var impacts = this.getParameter('sysparm_impact');
var deployments = this.getParameter('sysparm_deploy');
var recovers = this.getParameter('sysparm_recover');
var businessCI = new GlideRecord('cmdb_ci_service');
businessCI.addQuery('name', businessCIs);
businessCI.query();
while (businessCI.next()) {
var type = new GlideRecord('u_risk_calculation');
type.addQuery('u_change_type', types);
type.addQuery('u_business_criticality', businessCI.busines_criticality);
type.addQuery('u_impact', impacts);
type.addQuery('u_deployment', deployments);
type.addQuery('u_recoverability', recovers);
type.query();
while (type.next()) {
var appRiskCalc = {};
appRiskCalc.risk_app = type.u_risk.getDisplayValue() || '';
var data = new global.JSON().encode(appRiskCalc);
return data;
}
}
},
getTestMessage: function()
{
var types=this.getParameter('sysparm_changetype');
var businessCIs=this.getParameter('sysparm_business');
var serverCIs=this.getParameter('sysparm_server');
var impacts=this.getParameter('sysparm_impact');
var deployments=this.getParameter('sysparm_deploy');
var recovers=this.getParameter('sysparm_recover');
gs.log('types: '+types);
gs.log('businessCIs: '+businessCIs);
gs.log('serverCIs: '+serverCIs);
gs.log('impacts: '+impacts);
gs.log('deployments: '+deployments);
gs.log('recovers: '+recovers);
return "I am from getTestMessage";
},
type: 'RiskLookup'
});​
//Client script to call getTestMessage
function onChange(control, oldValue, newValue, isLoading)
{
var type = g_form.getValue('u_change_type');
var businessCI = g_form.getValue('u_business_ci');
var serverCI = g_form.getValue('u_related_ci');
var impact_scope = g_form.getValue('impact');
var deployment = g_form.getValue('u_deployment');
var recoverability = g_form.getValue('u_recoverability');
var ga = new GlideAjax('RiskLookup');
ga.addParam('sysparm_name','getTestMessage');
ga.addParam('sysparm_changetype', type);
ga.addParam('sysparm_business', businessCI);
ga.addParam('sysparm_server', serverCI);
ga.addParam('sysparm_impact', impact_scope);
ga.addParam('sysparm_deploy', deployment);
ga.addParam('sysparm_recover', recoverability);
ga.getXML(getInfo);
function getInfo(response)
{
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer); //alert the string returned "I am from getTestMessage
}
}
Vinod Kumar Kachineni
Community Rising Star 2022
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-07-2019 02:20 PM
I don't believe having the type property commented out will affect anything. Any other updates on this?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-07-2019 03:47 PM
The type there in the script include is only for tapping in to the object type. If that's not applicable here, there is no negative to commenting it out.
Please mark reply as Helpful, if applicable. Thanks!
Please consider marking my reply as Helpful and/or Accept Solution, if applicable. Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎07-07-2019 02:39 PM
Most of things posted here should work. I'm wondering two things:
1) Does the field being pulled really have a value?
2) The script include: Is the "Client callable" field checked?
3) Is the script include scoped and if it is, is it allowed for access from any scope.
Another thing to try is comment out everything in the script include and just return a hardcoded a value.