The CreatorCon Call for Content is officially open! Get started here.

How to fetch setPrefrence value from client script to UI page

Meenal Gharat
Tera Guru

Hello Experts,

 

Need help to fetch setPrefrence  value from onchange client script to UI page. I want to get current record sys_id 

 

This is my client script:

 

   
  if (newValue) { // or use the numeric value if applicable
  alert(newValue);
        // Open the UI Page as a modal
        var dialog = new GlideDialogWindow('RITM Details');
        dialog.setTitle('Server Onboarding Details');
        dialog.setSize(800); // adjust size as needed
        dialog.setPreference('change_sys_id', g_form.getUniqueValue());
        dialog.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="change_sys_id" value="${jvar_change_sys_id}"/>
 

  <g:ui_form>
    <table>
    <p>${change_sys_id}</p>
      <tr>
        <td style="width:25%">
          <g:form_label>RITM-Ref:</g:form_label>
        </td>
        <td style="width:60%">
          <g:ui_reference name="RITM-Ref:" id="RITM-Ref:" query="cat_item.nameLIKEProject Request^variables.b12dcbd71b496c10537d2069bc4bcbe3=1000" table="sc_req_item" onchange="fetchRITMDetails()"/>
        </td>
      </tr>
 
 
Setting this change_sys_id on script include
MeenalGharat_0-1760606539774.png

 

 

Best Regards,

Meenal

3 REPLIES 3

TejasSN_LogicX
Tera Contributor

Hi @Meenal Gharat ,,

 

hi you should try this with

var RITM_Helper = Class.create();
RITM_Helper.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    updateDescription: function() {
        // Fetch parameters from the UI Page GlideAjax call
        var changeSysId = this.getParameter('sysparm_change_sys_id');
        var ritm = this.getParameter('sysparm_ritm');
        var serverName = this.getParameter('sysparm_server_name');
        var ipAddress = this.getParameter('sysparm_ip_address');
        var subnetRange = this.getParameter('sysparm_subnet_range');
        var networkMask = this.getParameter('sysparm_network_mask');
        var domain = this.getParameter('sysparm_domain');
        var costCenter = this.getParameter('sysparm_cost_center');

        // Build description text
        var description_val =
            "RITM Reference: " + ritm + "\n" +
            "Server Name: " + serverName + "\n" +
            "IP Address: " + ipAddress + "\n" +
            "Subnet Range: " + subnetRange + "\n" +
            "Network Mask: " + networkMask + "\n" +
            "Domain: " + domain + "\n" +
            "Cost Center: " + costCenter + "\n";

        // Update the Change Request record using sys_id
        if (changeSysId) {
            var chg = new GlideRecord('change_request');
            if (chg.get(changeSysId)) {
                chg.description = description_val;
                chg.update();
                return "Change " + chg.number + " updated successfully.";
            } else {
                return "Change record not found for sys_id: " + changeSysId;
            }
        } else {
            return "No sys_id received.";
        }
    }

});

 

client script 

-

function updateChangeDescription() {
    var ga = new GlideAjax('RITM_Helper');
    ga.addParam('sysparm_name', 'updateDescription');
    ga.addParam('sysparm_change_sys_id', "${change_sys_id}");
    ga.addParam('sysparm_ritm', document.getElementById('ritm_ref').value);
    ga.addParam('sysparm_server_name', document.getElementById('server_name').value);
    ga.addParam('sysparm_ip_address', document.getElementById('ip_address').value);
    ga.addParam('sysparm_subnet_range', document.getElementById('subnet_range').value);
    ga.addParam('sysparm_network_mask', document.getElementById('network_mask').value);
    ga.addParam('sysparm_domain', document.getElementById('domain').value);
    ga.addParam('sysparm_cost_center', document.getElementById('cost_center').value);

    ga.getXMLAnswer(function(response) {
        alert(response);
    });
}

  try this script include but  

 

 

2)  very common ServiceNow pattern to pass thedata to   Client Script → UI Page → Script Include

client scritpt

function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == oldValue) {
        return;
    }

    if (newValue) {
        var dialog = new GlideDialogWindow('RITM_Details');
        dialog.setTitle('Server Onboarding Details');
        dialog.setSize(800, 600);
        
        // Pass current record sys_id to UI Page
        dialog.setPreference('change_sys_id', g_form.getUniqueValue());
        
        dialog.render();
    }
}

ui page script

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide">

  <!-- Get value from client -->
  <j:set var="change_sys_id" value="${jvar_change_sys_id}" />

  <g:ui_form>
    <h3>Change Record Sys ID Passed:</h3>
    <p>${change_sys_id}</p>

    <table>
      <tr>
        <td style="width:25%">
          <g:form_label>RITM-Ref:</g:form_label>
        </td>
        <td style="width:60%">
          <g:ui_reference name="RITM_Ref"
                          table="sc_req_item"
                          query="cat_item.nameLIKEProject Request^variables.b12dcbd71b496c10537d2069bc4bcbe3=1000"
                          onchange="fetchRITMDetails()"/>
        </td>
      </tr>
    </table>
  </g:ui_form>

  <script>
    function fetchRITMDetails() {
        var changeSysId = "${change_sys_id}";
        alert("Sys_id from Client Script: " + changeSysId);

        // Call a Script Include to use this value
        var ga = new GlideAjax('RITM_Helper');
        ga.addParam('sysparm_name', 'getDetails');
        ga.addParam('sysparm_change_sys_id', changeSysId);
        ga.getXMLAnswer(function(response) {
            alert("Response from Script Include: " + response);
        });
    }
  </script>
</j:jelly>

 

and here isyou script include

var RITM_Helper = Class.create();
RITM_Helper.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    getDetails: function() {
        var sysId = this.getParameter('sysparm_change_sys_id');
        if (!sysId) {
            return "No sys_id received";
        }

        var chg = new GlideRecord('change_request');
        if (chg.get(sysId)) {
            return "Change Request Number: " + chg.number + " (" + sysId + ")";
        } else {
            return "No record found for sys_id: " + sysId;
        }
    }

});

 

 

 

Hi ,

 

Thank you replying , tried printing change_sys_id on HTML it is coming as blank 

 

Best Regards,

Meenal

Ankur Bawiskar
Tera Patron
Tera Patron

@Meenal Gharat 

syntax is like this

Client Script:

var dialog = new GlideDialogWindow('show_resolution_code_notes');
	dialog.setTitle('Resolve');
	dialog.setPreference('sysid', g_form.getUniqueValue());
	dialog.render();

UI page: How to grab it is this

<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
	<g:ui_form>
		<g:evaluate var="jvar_sysid"
					expression="RP.getWindowProperties().sysid"/> 

<p>${jvar_sysid}</p>
</g:ui_form>
</j:jelly>

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader