Pass list collector values from server to Glide Ajax
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-19-2024 09:14 AM
I have two fields
Primary owner - reference
Secondary owner - list collector
Now I need to fetch all the values from both the fields (field 1: Primary owner - reference, field 2: Secondary owner - list collector ) and pass it to Glide Ajax and then I need to compare the values with requested for field . If requested for is any one of from the values of script include I need to add alert on the form in portal
data : function () {
var name = this.getParameter(sysparm_item);
var gr = new Glide Record('xyz_table');
gr.addquery('sys_id', name);
gr.query();
If (gr.next()){
Var aa = gr.primary_owner + gr.secondary_owner ;
Return aa;
Ajax
Var requesteduser = g_form.getValue('requested_for');
Var ga = new Glide Ajax('SI');
ga.addParam('sysparm_name', 'data');
ga.addParam('sysparm_id', g_form.getUniqueID());
ga.getXML(callback);
Function callback(response){
Var ans= response.responseXML.getattributr.doxumentid("answer");
Now here I need to compare each value with requesteduser and if it matches I need to add alert
Need your suggestion experts..thanks in advance 🙏
An
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-19-2024 10:03 AM
You would benefit a lot from reading through this guide on GlideAjax
In your client script addParam lines, you need one for each variable you are passing to the SI - the reference variable, and the list collector. If requested_for is the name of the reference variable, that's fine but you aren't using requesteduser anywhere if this is the case it should be the sysparm_id, not what you have there. You should also name your Script Include and function better - make it unique, and not the possibility of a reserved/system word like 'data'.
Reference and List Collector variables (fields are on tables, variables on Catalog Items) store sys_ids as their values, so if all you need to do is compare that to requested_for (also a sys_id), you can do that without a trip to the server / Glide Ajax.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
09-19-2024 10:15 AM - edited 09-19-2024 10:33 AM
Ok modify ur scripts..i really didn't understand what exactly the use of table in SI
But I was suggesting based on ur code only
Client script :
var requestedUser = g_form.getValue('requested_for');
var ga = new GlideAjax('SI');
ga.addParam('sysparm_name', 'data');
ga.addParam('sysparm_id', g_form.getUniqueID());
ga.getXML(callback);
}
function callback(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
var x = JSON.parse(answer);
if(x.includes(g_form.getValue('requested_for') || x.toString().indexOf(g_form.getValue('requested_for')>-1) {
alert('The requested user matches one of the owners.');
}
}
Script include:
data: function() {
var sysId = this.getParameter('sysparm_id');
var y= [];
var gr = new GlideRecord('xyz_table');
gr.addQuery('sys_id', sysId);
gr.query();
if (gr.next()) {
if (gr.primary_owner) {
y.push(gr.primary_owner.toString());
}
var secOwners = gr.secondary_owner.toString().split(',');
y=y.concat(secOwners);
}
return JSON.stringify(y);
},