how to use asynchronous glideajax call

divya123
Giga Contributor

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;
}

14 REPLIES 14

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;
}
 
}

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

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.

 

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

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 )