- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2020 06:59 AM
Hello... I have UI action that save session data of number, short description and description of incident that i want to add to request variables
UI Action:
var session = gs.getSession();
session.putClientData('number', current.sys_id);
session.putClientData('short_description', current.short_description);
session.putClientData('description', current.description);
url="sp?id=sc_cat_item&sys_id=f959c1fa2f5a4010151e877cf699b6a9&sysparm_category=d258b953c611227a0146101fb1be7c31";
action.setRedirectURL(url);
And i have catalog client script in item:
function onLoad() {
//Type appropriate comment here, and begin script below
if (null != g_user.getClientData('number')) {
var num = g_user.getClientData('number');
g_form.setValue('incidentnum', g_user.getClientData('number'));
var sd = g_user.getClientData('short_description');
g_form.setValue('subjek', num);
var desc = g_user.getClientData('description');
g_form.setValue('deskripsi', desc);
}
}
Its work, but how can i clear data session after i click the UI Action? I need to clear data after form request is load so, when i open the same form, the data will be empty. Please help. Thank you
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎01-19-2020 12:31 PM
Ok, the only way I can seem to get this to work in a Catalog Item is to do it via a GlideAjax call (basically just shifting this from client-side to server side). I made a quick script include that looks like this:
name: clientData
client callable: checked.
var clientData = Class.create();
clientData.prototype = Object.extendsObject(AbstractAjaxProcessor, {
type: 'clientData',
clearData: function() {
var session = gs.getSession();
session.clearClientData('number');
session.clearClientData('short_description');
session.clearClientData('description');
return 'clientData Cleared';
},
});
And then in a client script call:
var ga = new GlideAjax('clientData');
ga.addParam('sysparm_name', 'clearData');
ga.addParam('sysparm_id', g_form.getValue('ref_server_name'));
ga.getXML(procResponse);
function procResponse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
//indicate the response in the console
jslog(answer);
}
Michael D. Jones
Proud member of the GlideFast Consulting Team!

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎10-15-2024 09:44 AM
I dont like the solution with the session.
Here is how I do it ...
// Business Rule on Display
g_scratchpad.link = '';
// Get the instance name
var instanceName = gs.getProperty('instance_name');
// Check if necessary fields are set
var sysId = current.sys_id;
var user = current.assigned_to.sys_id;
// Construct the full URL in one go
g_scratchpad.link = 'https://' + instanceName + '.service-now.com/XXXX_WHERE_EVER_U_WANT_TO_GO_XXXXX&sys_id=' + sysId
+ '&sys_param_type=link'
+ '&sys_param_srn_user=' + user;
// UI Action
var url = g_scratchpad.link;
getTopWindow().popupOpenFocus(url, "_self", null, null, "");
// on load client script
var parmLink = getParmVal('sys_param_type') || '';
g_scratchpad.prefillUser = getParmVal('sys_param_srn_user') || '';
if (parmLink === 'link' && g_scratchpad.prefillUser.toString() !== '') {
g_form.setValue('assigned_to', g_scratchpad.prefillUser);
}
function getParmVal(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(top.location);
return results == null ? "" : decodeURIComponent(results[1]).toString();
}
Quite Flexible and could be done in a generic way to that you could handle multiple use cases within one BR / UI Action / CS ...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-30-2025 07:09 AM
Hi,
May I know where did you get ref_server_name in this line?
ga.addParam('sysparm_id', g_form.getValue('ref_server_name'));
Thank you!