how to use asynchronous glideajax call
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2018 02:35 AM
i used below code for avoiding duplicate asset tab with state is in-use, here instead of using gliderecord how can i user asynchronous glide ajax call, can anyone plerase rspond how can i user asynchronous glideajax call for below code
function onSubmit() {
//no duplicate asset in state "in use" is allowed
var sysid = g_form.getUniqueValue();
var asset = g_form.getValue('asset_tag');
var state = g_form.getValue('install_status');
g_form.hideFieldMsg('asset_tag');
if ( doesAssetExist(asset, sysid) > 0 && state == '1' ) {
g_form.showFieldMsg('asset_tag','Only one asset can be in state "In Use"!','error');
return false;
}
return true;
}
function doesAssetExist(asset, sysid) {
var i=0;
var rec = new GlideRecord('alm_asset');
rec.addQuery('asset_tag',asset);
rec.addQuery('install_status', '1');
rec.query();
while (rec.next()) {
if ( rec.sys_id != sysid ) {
i++;
}
}
return i;
}
- Labels:
-
Enterprise Asset Management
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2018 05:08 AM
i modified client script but still when i change state value 1 and submit the record it is accepting.
function onSubmit() {
//no duplicate asset in state "in use" is allowed
var sysid = g_form.getUniqueValue();
var asset = g_form.getValue('asset_tag');
var state = g_form.getValue('install_status');
g_form.hideFieldMsg('asset_tag');
if ( doesAssetExist(asset, sysid) > 0 && state == '1' ) {
g_form.showFieldMsg('asset_tag','Only one asset can be in state "In Use"!','error');
return false;
}
return true;
}
function doesAssetExist(asset, sysid){
var ga = new GlideAjax('AsettagDuplicate');
ga.addParam('sysparm_name', asset);
ga.addParam('sysparm_asset', asset);
//ga.addParam('sysparm_id',sysid);
ga.getXML(HelloWorldParse);
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
return answer;
}
}

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2018 07:45 PM
HI Divya,
I asked you couple of doubts, please revert on that as well.
Try below script as well:
Client Script: // I am removing asset from the ajax call passing only sys id
function doesAssetExist(asset, sysid){
var ga = new GlideAjax('AsettagDuplicate');
ga.addParam('sysparm_name', asset);
ga.addParam('sysparm_id',sysid);
ga.getXMLWait(HelloWorldParse); //Try making it syncronous
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer); //What alert is coming here?
return answer;
}
Script include:
var AsettagDuplicate = Class.create();
AsettagDuplicate.prototype = Object.extendsObject(AbstractAjaxProcessor, {
asset: function()
{
var sysid = this.getParameter('sysparm_id');
var rec = new GlideRecord('alm_asset');
rec.addQuery('sys_id', sysid);
rec.addQuery('install_status', '1');
rec.query();
while (rec.next()) {
if ( rec.sys_id != sysid ) {
i++;
}
}
//Try putting log here and see value of i
gs.log('Return I '+i);
return i;
},
type: 'AsettagDuplicate'
});
Thanks,
Ashutosh Munot
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2018 10:36 PM
i puts alert nothing is coming when i save the record and in script include wrote query on asset tag that is required based on asset query only it will fetch record number in the loop, sys id is diffent for each record so i used asset tag query in script include.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-20-2018 02:06 AM
HI,
If that is the case try this:
Try below script as well:
Client Script: // I am removing asset from the ajax call passing only sys id
function doesAssetExist(assetTag, sysid){
var ga = new GlideAjax('AsettagDuplicate');
ga.addParam('sysparm_name', asset);
ga.addParam('sysparm_id',assetTag);
ga.getXMLWait(HelloWorldParse); //Try making it syncronous
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer); //What alert is coming here?
return answer;
}
Script include:
var AsettagDuplicate = Class.create();
AsettagDuplicate.prototype = Object.extendsObject(AbstractAjaxProcessor, {
asset: function()
{
var assetTag= this.getParameter('sysparm_id');
var rec = new GlideRecord('alm_asset');
rec.addQuery('asset_tag', assetTag);
rec.addQuery('install_status', '1');
rec.query();
while (rec.next()) {
if ( rec.sys_id != sysid ) {
i++;
}
}
//Try putting log here and see value of i
gs.log('Return I '+i);
return i;
},
type: 'AsettagDuplicate'
});
Thanks,
Ashutosh Munot
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-20-2018 11:41 PM
Hi Ashutosh,
i have small question here from where you calling below line code in you script
ga.addParam('sysparm_name', asset);
and in script include you used sysid which sysid you are using for that
if ( rec.sys_id != sysid )