Get a first look at what's coming. The Developer Passport Australia Release Preview kicks off March 12. Dive in! 

GlideAjax getXMLWait() not working

adilbelahbib
Kilo Expert

Hey,

I'm trying to run simple script on a UI action that gets the group of the connected user. I created the script include and I used it in many other places using Ajax Asynchronous calls. However, when I tried to call it using a synchronous call, I got a 'null' result, as if the script doesn't wait for the answer to come.

Here's is a snippet from my UI Action containing the ajax call.

  var ajax = new GlideAjax('GetAssignementGroup');

  ajax.addParam('sysparm_name', 'getGroup');

  ajax.getXMLWait();

  var group = ajax.getAnswer();

  alert(group); //Prints 'null'

As I said, I'm already using the same script include with asynchronous calls and it's working. Do you have any ideas ?

14 REPLIES 14

Or, even better yet, send that Group Name as a param in your client script:



var GetAssignementGroup = Class.create();


GetAssignementGroup.prototype = Object.extendsObject(AbstractAjaxProcessor, {




      getGroup: function()


      {


              var _sysID = 'sysID not found';


              var groupName = this.getParameter('sysparm_groupName');


              var gr = new GlideRecord('sys_user_group');


              gr.addQuery('name', groupName);


              gr.query();


              if (gr.next())


                      _sysID = gr.sys_id.toString();


                     


              return _sysID;


      }


});








function test()


{


      var ajax = new GlideAjax('GetAssignementGroup');


      ajax.addParam('sysparm_name', 'getGroup');


      ajax.addParam('sysparm_groupName', 'PUT YOUR GROUP NAME HERE');


      ajax.getXMLWait();


      var group = ajax.getAnswer();



      alert(group);


}











Sadly, it doesn't work !


Maybe it has something to do with me using Customer Services application ? .. Should the script include be in global to be called asynchronously ?


Here's my script include, which works perfectly with an async call



var GetAssignementGroup = Class.create();


GetAssignementGroup.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {



  type: 'GetAssignementGroup',


  getGroup: function()


  {


  var groupMember = new GlideRecord('sys_user_grmember');



  //Get the type sys_id


  var groupType = new GlideRecord('sys_user_group_type');


  groupType.addQuery('name', 'Affectation RCBT');


  groupType.query();


  groupType.next();



  groupMember.addQuery('group.type','CONTAINS', groupType.sys_id);


  groupMember.addQuery('user', gs.getUserID());


  groupMember.query();



  if(groupMember.next())


  return groupMember.group.sys_id;


  else


  return null;



  }



});


find_real_file.png



Make sure it's "Client callable"


Yes it is. But it's rather in the Customer Services application (the ui action is also in the customer services application)



find_real_file.png