- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2018 07:50 AM
Hi All,
I'm creating a record poducer and have the variable 'replication_environment'. I've created a catalog client script to do a glide ajax to a script include to lookup this value from a custom table and return 8 more values associated to this to populate 8 variables on the record producer.
My catalog script is calling the script includes ok, but I'm struggling to return the values I want to the populate the other variables.
Catalog Script:
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}
var env = g_form.getValue('replication_environment');
alert('environment name: ' + env);
var ga = new GlideAjax('internalEnvLookup');
ga.addParam('sysparm_name', 'findConfig');
ga.addParam('sysparm_env', env);
ga.getXML(setEnvConfig);
function setEnvConfig(response){
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.addInfoMessage(answer);
answer = answer.evalJSON(); // Transform the JSON string to an object
g_form.addInfoMessage(answer);
g_form.setValue('rep_database_name', answer.database);
g_form.setValue('strata_build_version', answer.strataBuild);
g_form.setValue('screen_beans_version', answer.screenBeans);
g_form.setValue('quotes_engine_version', answer.quotesEngine);
g_form.setValue('cdl_combo_version', answer.combo);
g_form.setValue('cdl_datepicker_version', answer.datePicker);
g_form.setValue('edi_engine_version', answer.ediEngine);
g_form.setValue('edi_dcd_version', answer.dcd);
}
//Type appropriate comment here, and begin script below
}
Script Include
var internalEnvLookup = Class.create();
internalEnvLookup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
findConfig : function() {
var envName = this.getParameter('sysparm_env');
var envDetails = {};
var gr = new GlideRecord('u_internal_production_environments');
gr.addQuery('u_environment_name', envName);
gr.query();
if(gr.next()) {
gs.log('environment found');
envDetails.database = gr.u_database;
envDetails.strataBuild = gr.u_strata_build;
envDetails.screenBeans = gr.u_screen_beans_version;
envDetails.combo = gr.u_cdlcombo_version;
envDetails.datePicker = gr.u_cdl_datepicker_version;
envDetails.quotesEngine = gr.u_quotes_engine_build;
envDetails.ediEngine = gr.u_edi_engine_build;
envDetails.dcd = gr.u_edi_dcd_version;
}
gs.log('Environment Details: ' + envDetails.database + envDetails.strataBuild + envDetails.datePicker);
var json = new JSON();
var data = json.encode(envDetails);
return data;
},
});
When I try this I just get object Object.
Any help where I'm going wrong is greatly appreciated.
Thanks
Sam
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2018 08:09 AM
A few edits I might suggest:
-Use getXMLAnswer instead of getXML, then you have the return value in string form directly passed into your callback function.
-Use gr.getValue() instead of accessing the GlideElement fields directly, which can lead to unexpected results with javascript being a pass-by-reference language.
-Use JSON.parse() instead of string.evalJSON().
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}
var env = g_form.getValue('replication_environment');
alert('environment name: ' + env);
var ga = new GlideAjax('internalEnvLookup');
ga.addParam('sysparm_name', 'findConfig');
ga.addParam('sysparm_env', env);
ga.getXMLAnswer(setEnvConfig);
function setEnvConfig(response){
g_form.addInfoMessage(response);
answer = JSON.parse(response); // Transform the JSON string to an object
g_form.addInfoMessage(answer);
g_form.setValue('rep_database_name', answer.database);
g_form.setValue('strata_build_version', answer.strataBuild);
g_form.setValue('screen_beans_version', answer.screenBeans);
g_form.setValue('quotes_engine_version', answer.quotesEngine);
g_form.setValue('cdl_combo_version', answer.combo);
g_form.setValue('cdl_datepicker_version', answer.datePicker);
g_form.setValue('edi_engine_version', answer.ediEngine);
g_form.setValue('edi_dcd_version', answer.dcd);
}
//Type appropriate comment here, and begin script below
}
var internalEnvLookup = Class.create();
internalEnvLookup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
findConfig : function() {
var envName = this.getParameter('sysparm_env');
var envDetails = {};
var gr = new GlideRecord('u_internal_production_environments');
gr.addQuery('u_environment_name', envName);
gr.query();
if(gr.next()) {
gs.log('environment found');
envDetails.database = gr.getValue('u_database');
envDetails.strataBuild = gr.getValue('u_strata_build');
envDetails.screenBeans = gr.getValue('u_screen_beans_version');
envDetails.combo = gr.getValue('u_cdlcombo_version');
envDetails.datePicker = gr.getValue('u_cdl_datepicker_version');
envDetails.quotesEngine = gr.getValue('u_quotes_engine_build');
envDetails.ediEngine = gr.getValue('u_edi_engine_build');
envDetails.dcd = gr.getValue('u_edi_dcd_version');
}
gs.log('Environment Details: ' + envDetails.database + envDetails.strataBuild + envDetails.datePicker);
var json = new JSON();
var data = json.encode(envDetails);
return data.toString();
},
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2018 07:55 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2018 08:00 AM
Hi Pritha,
I've changed the return statement, do I need to change some other things in the script include as well as this is still not working
script include
var internalEnvLookup = Class.create();
internalEnvLookup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
findConfig : function() {
var envName = this.getParameter('sysparm_env');
var envDetails = {};
var gr = new GlideRecord('u_internal_production_environments');
gr.addQuery('u_environment_name', envName);
gr.query();
if(gr.next()) {
gs.log('environment found');
envDetails.database = gr.u_database;
envDetails.strataBuild = gr.u_strata_build;
envDetails.screenBeans = gr.u_screen_beans_version;
envDetails.combo = gr.u_cdlcombo_version;
envDetails.datePicker = gr.u_cdl_datepicker_version;
envDetails.quotesEngine = gr.u_quotes_engine_build;
envDetails.ediEngine = gr.u_edi_engine_build;
envDetails.dcd = gr.u_edi_dcd_version;
}
gs.log('Environment Details: ' + envDetails.database + envDetails.strataBuild + envDetails.datePicker);
var json = new JSON();
var data = json.encode(envDetails);
return data.toString();
},
});
I still get the following:
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2018 08:06 AM

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-09-2018 08:09 AM
A few edits I might suggest:
-Use getXMLAnswer instead of getXML, then you have the return value in string form directly passed into your callback function.
-Use gr.getValue() instead of accessing the GlideElement fields directly, which can lead to unexpected results with javascript being a pass-by-reference language.
-Use JSON.parse() instead of string.evalJSON().
function onChange(control, oldValue, newValue, isLoading) {
if (isLoading) {
return;
}
var env = g_form.getValue('replication_environment');
alert('environment name: ' + env);
var ga = new GlideAjax('internalEnvLookup');
ga.addParam('sysparm_name', 'findConfig');
ga.addParam('sysparm_env', env);
ga.getXMLAnswer(setEnvConfig);
function setEnvConfig(response){
g_form.addInfoMessage(response);
answer = JSON.parse(response); // Transform the JSON string to an object
g_form.addInfoMessage(answer);
g_form.setValue('rep_database_name', answer.database);
g_form.setValue('strata_build_version', answer.strataBuild);
g_form.setValue('screen_beans_version', answer.screenBeans);
g_form.setValue('quotes_engine_version', answer.quotesEngine);
g_form.setValue('cdl_combo_version', answer.combo);
g_form.setValue('cdl_datepicker_version', answer.datePicker);
g_form.setValue('edi_engine_version', answer.ediEngine);
g_form.setValue('edi_dcd_version', answer.dcd);
}
//Type appropriate comment here, and begin script below
}
var internalEnvLookup = Class.create();
internalEnvLookup.prototype = Object.extendsObject(AbstractAjaxProcessor, {
findConfig : function() {
var envName = this.getParameter('sysparm_env');
var envDetails = {};
var gr = new GlideRecord('u_internal_production_environments');
gr.addQuery('u_environment_name', envName);
gr.query();
if(gr.next()) {
gs.log('environment found');
envDetails.database = gr.getValue('u_database');
envDetails.strataBuild = gr.getValue('u_strata_build');
envDetails.screenBeans = gr.getValue('u_screen_beans_version');
envDetails.combo = gr.getValue('u_cdlcombo_version');
envDetails.datePicker = gr.getValue('u_cdl_datepicker_version');
envDetails.quotesEngine = gr.getValue('u_quotes_engine_build');
envDetails.ediEngine = gr.getValue('u_edi_engine_build');
envDetails.dcd = gr.getValue('u_edi_dcd_version');
}
gs.log('Environment Details: ' + envDetails.database + envDetails.strataBuild + envDetails.datePicker);
var json = new JSON();
var data = json.encode(envDetails);
return data.toString();
},
});