- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2019 01:30 AM
Hello,
I am trying to retrieve values from array which contains "object instances" in client script with no success as the client script alertsvalues of 'undefined' .
Any idea how to fix this?
Much appreciated,
Milan
Script include snippet:
checkDogName: function () {
var dogs = [];
var dogName = this.getParameter('sysparm_dog_name');
var dogsGR = new GlideRecord('x_364487_fetch_table');
gs.eventQueue('x_364487_fetch.dummy.event', dogsGR, dogName, "!!!MILAN - fetchUtils clients script");
dogsGR.addQuery('name', dogName);
dogsGR.query();
while(dogsGR.next()) {
var oneDogObject = {};
oneDogObject.number = dogsGR.number.toString();
oneDogObject.name= dogsGR.name.toString();
dogs.push(oneDogObject);
}
return dogs.toString();
},
Client script:
jQuery('#checkDogName').click(function() {
var ga = new GlideAjax('fetchUtils');
ga.addParam('sysparm_name', 'checkDogName');
ga.addParam('sysparm_dog_name', jQuery('#dogName').val());
ga.getXML(fetchBallback2);
});
function fetchBallback2(response) {
var answer = response.responseXML.documentElement.getAttribute('answer').split(',');
for(var i = 0; i < answer.length; i++) {
alert('Dog Number: ' + answer[i].number + ' Dog name: ' + answer[i].name);
}
}
Solved! Go to Solution.
- Labels:
-
Scripting and Coding
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2019 01:51 AM
Hello Milan,
You need to create and return a JSON formatted object and parse that in client script.
you can refer this blog:
JSON PARSING: USE CASE AND SOLUTIONS
Please mark as Correct Answer/Helpful, if applicable.
Thanks!
Abhishek Gardade
Abhishek Gardade

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2019 01:49 AM
Hi there ,
you can refer the script below it is to auto populat user data through SI and client script :
Script include
user_data_populate.prototype = Object.extendsObject(AbstractAjaxProcessor, {
getDetails: function()
{
var arr = [];
var usr_id=this.getParameter('sysparm_user_id'); //Value Fetched from client script
var gr=new GlideRecord('sys_user');
gr.addQuery('sys_id',usr_id);
gr.query();
while(gr.next())
{
arr.push(gr.location.name);
arr.push(gr.email);
}
//gs.addInfoMessage(arr);
return arr.toString();
},
});
if (isLoading || newValue == '') {
return;
}
var user=g_form.getValue('Select_User');
var ga= new GlideAjax('user_data_populate');
ga.addParam("sysparm_name","getDetails");
ga.addParam("sysparm_user_id",user); // VAlue passed to script include
ga.getXML(detailsUser);
function detailsUser(response)
{
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
var value = answer.split(",");
alert(value[0]);
alert(value[1]);
g_form.setValue('location',value[0]);
g_form.setValue('email_id',value[1]);
}
}
If my reply helps you at all, I’d really appreciate it if you click the Helpful button and if my reply is the answer you were looking for, it would be awesome if you could click both the Helpful and Accepted Solution buttons!
Regards,
Apeksha
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2019 01:51 AM
Hello Milan,
You need to create and return a JSON formatted object and parse that in client script.
you can refer this blog:
JSON PARSING: USE CASE AND SOLUTIONS
Please mark as Correct Answer/Helpful, if applicable.
Thanks!
Abhishek Gardade
Abhishek Gardade
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2019 02:09 AM
Hi Milan,
update code as below and run once and it should work; encode before sending and parse in client script
instead of return dogs.toString(); do this
return json.encode(dogs);
In client script use this
var answer = response.responseXML.documentElement.getAttribute('answer').split(',');
var returnData = JSON.parse(answer);
for(var i = 0; i < returnData.length; i++) {
alert('Dog Number: ' + returnData[i].number + ' Dog name: ' + returnData[i].name);
}
Mark Correct if this solves your issue and also mark Helpful if you find my response worthy based on the impact.
Thanks
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-27-2019 04:40 AM
This worked finally, see below code...
HTML (in UI Page)
---------------------------
<?xml version="1.0" encoding="utf-8" ?>
<j:jelly trim="false" xmlns:j="jelly:core" xmlns:g="glide" xmlns:j2="null" xmlns:g2="null">
<h1>Add a new dog</h1>
<form class="form-horizontal">
<div class="form-group">
<label for="dogName" class="col-sm-2 control-label">Name of dog:</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="dogName" />
</div>
</div>
<div>
<div class="form-group">
<label for="dogAge" class="col-sm-2 control-label">Age of dog:</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="dogAge" />
</div>
</div>
</div>
<div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input id="dogShots" type="checkbox" />
Shots
</label>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<div class="checkbox">
<label>
<input id="dogNeutered" type="checkbox" />
Neutered
</label>
</div>
</div>
</div>
</form>
<br/>
<button id="addDog" class="btn btn-default">Add Dog</button>
<div id="msg">
</div>
<button id="checkDogName" class="btn btn-default">Check dog name</button>
<div id="msg2">
</div>
</j:jelly>
Client Script (in UI Page)
-------------------------------
jQuery('#addDog').click(function() {
var ga = new GlideAjax('fetchUtils');
ga.addParam('sysparm_name', 'createDog');
ga.addParam('sysparm_dog_name', jQuery('#dogName').val());
ga.addParam('sysparm_dog_age', jQuery('#dogAge').val());
ga.addParam('sysparm_dog_neutered', jQuery('#dogNeutered').is(':checked'));
ga.addParam('sysparm_dog_shots', jQuery('#dogShots').is(':checked'));
ga.getXML(fetchBallback);
});
function fetchBallback(response) {
var answer = response.responseXML.documentElement.getAttribute('answer').split('|');
jQuery('#msg').append('<p>' + answer[0] + ' has successfully been created. Dog ID: ' + answer[1] + '</p><br/><a href="'+ answer[2] + '">View new dog</a>');
}
//second Glide Ajax...
jQuery('#checkDogName').click(function() {
var ga = new GlideAjax('fetchUtils');
ga.addParam('sysparm_name', 'checkDogName');
ga.addParam('sysparm_dog_name', jQuery('#dogName').val());
ga.getXML(fetchBallback2);
});
function fetchBallback2(response) {
var answer = response.responseXML.documentElement.getAttribute('answer');
var dogs = JSON.parse(answer);
for(var i = 0; i < dogs.length; i++) {
alert(dogs[i].number + " - " + dogs[i].name);
}
}
Script include for the UI Page
--------------------------------
var fetchUtils = Class.create();
fetchUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
createDog: function () {
var dogName = this.getParameter('sysparm_dog_name');
var dogAge = this.getParameter('sysparm_dog_age');
var dogShots = this.getParameter('sysparm_dog_shots');
var dogNeutered = this.getParameter('sysparm_dog_neutered');
//insert dog
var newDog = new GlideRecord('x_364487_fetch_table');
newDog.newRecord();
newDog.name = dogName;
newDog.age = dogAge;
if(dogShots) {
newDog.shots = true;
}
if(dogNeutered) {
newDog.neutered = true;
}
var dogNumber = newDog.number.getDisplayValue();
//fills sysID with sys_id of newly created record
var sysID = newDog.insert();
var dogLink = newDog.getLink();
return dogName + '|' + dogNumber + '|' + dogLink;
},
createEmailNotification: function () {
var adopterEmail = this.getParameter('sysparm_adopter_email');
var adoptionCentre = this.getParameter('sysparm_adoption_centre');
var adoptionCentreEmail = '';
var ac = new GlideRecord('x_364487_fetch_adoption_center');
ac.get(adoptionCentre);
adoptionCentreEmail = ac.email.getDisplayValue();
gs.eventQueue('x_364487_fetch.adoption_email', ac, adoptionCentreEmail, adopterEmail);
return;
},
checkDogName: function () {
var dogs = [];
var dogName = this.getParameter('sysparm_dog_name');
var dogsGR = new GlideRecord('x_364487_fetch_table');
gs.eventQueue('x_364487_fetch.dummy.event', dogsGR, dogName, "!!!MILAN - fetchUtils clients script");
dogsGR.addQuery('name', dogName);
dogsGR.query();
while(dogsGR.next()) {
var dogRow = {};
dogRow.number = dogsGR.number.toString();
dogRow.name = dogsGR.name.toString();
dogs.push(dogRow);
}
return JSON.stringify(dogs);
},
type: 'fetchUtils'
});