Skip to main content

AJAX call example 1: return multiple values

AJAX call example 1: return multiple values

Client script code:

//--author: RDS Feb 2018
function onChange(control, oldValue, newValue, isLoading) {
    if (isLoading || newValue == '') {
        // return;
    }
    //--default the line manager and job title from requested for field
    g_form.setValue('job_title', '');
    g_form.setValue('line_manager', '');
    if (newValue!=''){
        var ga = new GlideAjax('my_ajax_funcs_sc');
        ga.addParam('sysparm_name', 'm_getuserinfo');
        ga.addParam('sysparm_usersysid', newValue);
            ga.getXML(function(serverResponse){
              var result = serverResponse.responseXML.getElementsByTagName("result");
              var message = result[0].getAttribute("message");
              //alert(message);
              //--get favorite elements
              var favorites = serverResponse.responseXML.getElementsByTagName("favorite");
              for(var i = 0; i < favorites.length; i++) {
                  var name = favorites[i].getAttribute("name");
                  var value = favorites[i].getAttribute("value");
              }

        });
    }
}

Script include script (client callable):

var my_ajax_funcs_sc = Class.create();
my_ajax_funcs_sc.prototype = Object.extendsObject(AbstractAjaxProcessor, {
   
    m_getuserinfo: function(){
        //--
        var userSYSID=this.getParameter('sysparm_usersysid');
        var sResult1='';
        var sResult2='';
        var result = this.newItem("result");
        result.setAttribute("message", "returning all favorites");
        //...complete the code...
        this._addFavorite('result1', sResult1);
        this._addFavorite('result2', sResult2);
        return result;
    },

    _addFavorite : function(name, value) {
        var favs = this.newItem("favorite");
        favs.setAttribute("name", name);
        favs.setAttribute("value", value);
    },

    type: 'my_ajax_funcs_sc'
});

Comments

Popular posts from this blog

ServiceNow check for null or nil or empty (or not)

Haven't tested these all recently within global/local scopes, so feel free to have a play! option 1 use an encoded query embedded in the GlideRecord , e.g.  var grProf = new GlideRecord ( 'x_cls_clear_skye_i_profile' ); grProf . addQuery ( 'status=1^ owner=NULL ' ); grProf . query (); even better use the glideRecord  addNotNullQuery or addNullQuery option 2 JSUtil.nil / notNil (this might be the most powerful. See this link ) example: if ( current . operation () == 'insert' && JSUtil . notNil ( current . parent ) && ! current . work_effort . nil ())  option 3 there might be times when you need to get inside the GlideRecord and perform the check there, for example if the code goes down 2 optional routes depending on null / not null can use gs.nil : var grAppr = new GlideRecord ( 'sysapproval_approver' ); var grUser = new GlideRecord ( 'sys_user' ); if ( grUser . get ( 'sys_id' , current . approver )){...

Code a pause/wait - gs.sleep or gs.wait alternative, pause script for specified seconds (timer)

Code a pause/wait - gs.sleep / gs.wait alternative, pause script for specified seconds (timer)  e.g. 10 seconds: do_sleep ( 10000 ); function do_sleep ( milliseconds ) { var start = new Date (). getTime (); for ( var i = 0 ; i < 1e7 ; i ++) { if (( new Date (). getTime () - start ) > milliseconds ){ gs . print ( 'waking up!' ); break ; } } }