Glide ajax method

instance
Tera Contributor

 A reusable GlideAjax method to do a lookup of records from case table
 The method should accept these inputs: table name and encoded query
 And return the list o ftable name, sys_id and a list of field names found
And return a JSON object containing the field names and their corresponding values.

how to do this in client script and script inlcude 

2 ACCEPTED SOLUTIONS

Hi @instance  

 

Below is the client callable script include.

 

 

var clientTableQueryUtil = Class.create();
clientTableQueryUtil.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getRecords:function()
{
var tblName=this.getParameter('sys_parm_tb_name');
var qry=this.getParameter('sys_parm_qry');
var recSysIDs=[];
var rc=new GlideRecord(tblName);
rc.addEncodedQuery(qry);
rc.query();
while(rc.next())
{
	recSysIDs.push(rc.getUniqueValue());
}
return recSysIDs;
},
    type: 'clientTableQueryUtil'
});

 

Client Script

	function onChange(control, oldValue, newValue, isLoading) {
	if (isLoading || newValue == '') {
		return;
	}
		var ga = new GlideAjax('clientTableQueryUtil'); 
	ga.addParam('sysparm_name','getRecords');  
	ga.addParam('sys_parm_tb_name',"incident"); 
	ga.addParam('sys_parm_qry',"active=true"); 
	ga.getXML(cb);  

	
	function cb(response) {  
	var answer = response.responseXML.documentElement.getAttribute("answer"); 
		alert(answer);
	}

	//Type appropriate comment here, and begin script below
	
	}

 

 

 

 


Thanks and Regards,

Saurabh Gupta

View solution in original post

Hi @instance  , I hope this will resolve your issue.

To get members in a group you should query the Group Members[ sys_user_grmember] table

instead of “sys_user_group”.

I've created a catalog item that contains two fields one is referenced to "sys_user_group" and the other one is a multi-line variable (i-e: description), And I've created a script include that queries members of the group based on group ID (selected on catalog item variable), then I created an Onchange client script on group field that will get value from group field and pass to script include as a parameter.

Here is a code example:

- Script include:

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

getGroupMembers: function() {
var groupID = this.getParameter('sysparm_group_id'); //Get group ID from Client Side
var gr = new GlideRecord("sys_user_grmember"); // Group Members Table
gr.addEncodedQuery('group=' + groupID); // Query with group id
gr.query();
var obj = {}; // Object to store group member's IDs
var i = 1;
while (gr.next()) {
var User = "Member "+ i + " ID: "; // object variables creation to store multiples user's IDs
obj[User] = gr.user.toString(); // Assigning ID to object variable
i++;
}
return JSON.stringify(obj); // returning object as string
},
type: 'GetGroupMembers'
});

 

- Client Script:

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

//Type appropriate comment here, and begin script below
var groupID = g_form.getValue('select_group'); // get value from group variable referenced to sys_user_group 
var ga = new GlideAjax('GetGroupMembers');
ga.addParam('sysparm_name', 'getGroupMembers');
ga.addParam('sysparm_group_id', groupID);
ga.getXML(getMembers);

function getMembers(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('group_member_s_sysids', answer);
}

}

Output:

LutufAliShah1_0-1676552370592.png

View solution in original post

8 REPLIES 8

 

 

I have Two fields

 

@instance  

you are not sending the group sysId to the ajax method

pass it using correct GlideAjax syntax; use that in query; push user sysId in array and then return that value

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

Hi @instance  , I hope this will resolve your issue.

To get members in a group you should query the Group Members[ sys_user_grmember] table

instead of “sys_user_group”.

I've created a catalog item that contains two fields one is referenced to "sys_user_group" and the other one is a multi-line variable (i-e: description), And I've created a script include that queries members of the group based on group ID (selected on catalog item variable), then I created an Onchange client script on group field that will get value from group field and pass to script include as a parameter.

Here is a code example:

- Script include:

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

getGroupMembers: function() {
var groupID = this.getParameter('sysparm_group_id'); //Get group ID from Client Side
var gr = new GlideRecord("sys_user_grmember"); // Group Members Table
gr.addEncodedQuery('group=' + groupID); // Query with group id
gr.query();
var obj = {}; // Object to store group member's IDs
var i = 1;
while (gr.next()) {
var User = "Member "+ i + " ID: "; // object variables creation to store multiples user's IDs
obj[User] = gr.user.toString(); // Assigning ID to object variable
i++;
}
return JSON.stringify(obj); // returning object as string
},
type: 'GetGroupMembers'
});

 

- Client Script:

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

//Type appropriate comment here, and begin script below
var groupID = g_form.getValue('select_group'); // get value from group variable referenced to sys_user_group 
var ga = new GlideAjax('GetGroupMembers');
ga.addParam('sysparm_name', 'getGroupMembers');
ga.addParam('sysparm_group_id', groupID);
ga.getXML(getMembers);

function getMembers(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('group_member_s_sysids', answer);
}

}

Output:

LutufAliShah1_0-1676552370592.png

Ankur Bawiskar
Tera Patron
Tera Patron

@instance  

So what did you start with and where are you stuck?

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