- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2021 11:23 AM
Hey all,
I am a bit stumped. I have looked up countless articles about how to pass a variable (the sys_id in my case) from a UI Action to a UI Page. When someone is on a Case, they can click a UI Action Button which would then send some form data (either from a glideAJAX call that will use the passed sys_id to look up and return case data, OR, a simpler solution- by passing g_form data for the required fields and pass those to the UI Page).
I have used this as a guide
Here is the code:
UI Action Script
function showOpsGenieWidget() {
var gm = new GlideModal('ops_genie_iframe');
var sysID = g_form.getUniqueValue();
var vendorName = g_form.getValue('u_vendor');
jslog('sys id:: ' + vendorName + ' ' + sysID); // THIS DOES WORK, JUST CANT PASS THROUGH YET
// gm.setPreference('sysID', sysID); // DOES NOT WORK SINCE THIS IS TO ADD TO A SPECIFIC FIELD ON A FORM
gm.setWidth(1000);
gm.setTitle('On-Call ' + sysID);
gm.render();
}
UI Page HTML
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<j:set var="sysID" value="${RP.getParameterValue('sysID)}"/>
<div>
<p>sysID is:: ${sysID} </p>
</div>
<!-- <iframe class="opsgenie" src="/opsgenie"></iframe> -->
<footer class="modal-footer flex">
<g:dialog_buttons_ok_cancel ok="return onOK();" cancel="return onCancel();" ok_type="button" cancel_type="button"/>
</footer>
</j:jelly>
UI Page Client Script
function onOK() {
gsftSubmit(null, g_form.getFormElement(), 'On Call');
}
function onCancel() {
var o = GlideModal.prototype.get('SCOPE.On Call');
o.destroy();
}
Any help would be appreciated. Thanks in advance.
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2021 12:28 PM
I was able to solve this using g_scratchpad. Here's how I used the scratchpad:
UI Action:
var sys_id=1234;
var vendor='This is the Vendor Name';
var caseNumber = 'abc1234567;
var opsGenieOnCallInfo = {
sys_id: sysID,
vendor: vendorName,
caseNumber: caseNumber
};
g_scratchpad.opsOnCallInfo = opsGenieOnCallInfo;
UI Page:
var passedData;
if (g_scratchpad.opsOnCallInfo){
passedData = g_scratchpad.opsOnCallInfo;
}
From there I can use the data and place it into the HTML.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2021 11:39 AM
Hi,
Please check below links:
Thnaks,
Anil Lande
Thanks
Anil Lande
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2021 12:21 PM
Maybe because you have a missing single quote in
RP.getParameterValue('sysID)
?
To make sure that you don't run into undocumented/poorly documented hidden quirks, I advise you to stick to the platform conventions - in this case use prefix 'sysparm_' (both in the UI Action and the UI Page):
gm.setPreference('sysparm_sysID', sysID);
<j:set var="jvar_sysID" value="${ RP.getParameterValue('sysparm_sysID'); }"/>
Not something that is documented, Jelly variables must start with the prefix jvar_
- as seen above.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2021 12:23 PM
Just to be clear, it seems prefixing URL parameters with sysparm_
is required.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
08-05-2021 12:28 PM
I was able to solve this using g_scratchpad. Here's how I used the scratchpad:
UI Action:
var sys_id=1234;
var vendor='This is the Vendor Name';
var caseNumber = 'abc1234567;
var opsGenieOnCallInfo = {
sys_id: sysID,
vendor: vendorName,
caseNumber: caseNumber
};
g_scratchpad.opsOnCallInfo = opsGenieOnCallInfo;
UI Page:
var passedData;
if (g_scratchpad.opsOnCallInfo){
passedData = g_scratchpad.opsOnCallInfo;
}
From there I can use the data and place it into the HTML.