GlideAjax query

J_31
Kilo Sage

Hi 

I am not sure why the value is not populated when I change the configuration item field value in Incident form . it updates when is save. Its suppose to update when I change the value in CI field.

Script Include

--------------------

var PopulateDemo = Class.create();
PopulateDemo.prototype = Object.extendsObject(AbstractAjaxProcessor, {

popAssignmentGroup : function()
{
var gr = new GlideRecord('cmdb_ci');
gr.addQuery('sys_id',this.getParameter('sysparm_cmdb_ci'));
gr.query();
if(gr.next())
{
return gr.support_group;
}
},

type: 'PopulateDemo'
});

Client Script

-----------------

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var ga = new GlideAjax('PopulateDemo');
ga.addParam('sysparam_name','popAssignmentGroup');
ga.addParam('sysparam_cmdb_ci',g_form.getValue('cmdb_ci'));
ga.getXML(getResponse);

function getResponse(response)
{
var answer = response.responseXML.documentElement.getAttribute("answer");
g_form.setValue('assignment_group',answer);
}

//Type appropriate comment here, and begin script below

}

1 ACCEPTED SOLUTION

Aman Kumar S
Kilo Patron

Hey,

Try Below:

Client script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var ga = new GlideAjax('PopulateDemo');
    ga.addParam('sysparm_name', 'popAssignmentGroup');
    ga.addParam('sysparm_cmdb_ci', g_form.getValue("cmdb_ci"));
    ga.getXML(getResponse);

    function getResponse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
	g_form.setValue('assignment_group', answer);
    }


}

 

Script Include

var PopulateDemo = Class.create();
PopulateDemo.prototype = Object.extendsObject(AbstractAjaxProcessor, {

popAssignmentGroup : function(){
   var cmdbCI = this.getParameter('sysparm_cmdb_ci');
   var gr = new GlideRecord('cmdb_ci');
   if(gr.get(cmdbCI){
      return gr.getValue("support_group");
   }
 return;
},

type: 'PopulateDemo'
});

 

Feel free to mark correct, If I answered your query.

Will be helpful for future visitors looking for similar questions šŸ™‚

Best Regards
Aman Kumar

View solution in original post

26 REPLIES 26

Sagar Pagar
Tera Patron

Hi,

Here is update scripts.

 

Client script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {

        return;
    }

    var ga = new GlideAjax('PopulateDemo');
    ga.addParam('sysparm_name', 'popAssignmentGroup');  // function name should be sysparm_name
    ga.addParam('sysparm_cmdb_ci', g_form.getValue("cmdb_ci"));  // parameter should be starts with sysparm_
    ga.getXML(getResponse);

    function getResponse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
      //  alert(answer);  // supoirt group sys_id 
		
		g_form.setValue('assignment_group', answer);
    }


}

 

Script Include:

Make sure your script include is Client callable.

 

var PopulateDemo = Class.create();
PopulateDemo.prototype = Object.extendsObject(AbstractAjaxProcessor, {

    popAssignmentGroup: function() {
        gs.log("Sagar: SI");

        var gr = new GlideRecord('cmdb_ci');
        gr.get(this.getParameter('sysparm_cmdb_ci'));  // same parameter declared in client script
        gr.query();
        if (gr.next()) {

          //  gs.log("Supoirt group sys_id: " + gr.getValue("support_group").toString());

            return gr.getValue("support_group").toString();

        } else {
            return '';
        }
    },

    type: 'PopulateDemo'
});

 

 

Thanks!

Sagar Pagar

The world works with ServiceNow

rm2
Kilo Contributor

com.glide.script.RhinoEcmaError: Cannot convert null to an object.
<refname> : Line(1) column(0)
==> 1: __ref__.getValue().indexOf(gs.getUserID()) != -1

 

getting thiS ERRor

Hi,

 

Update this return line in script include and try it.

            return gr.getValue("support_group").toString();

with

            return gr.getValue("support_group");

 

Thanks!

Sagar Pagar

The world works with ServiceNow

It worked finally!

I tried in a different instance. 

Many thanks 

@Aman Kumar @Sagar Pagar @Sebastian Laursen 

Aman Kumar S
Kilo Patron

Hey,

Try Below:

Client script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var ga = new GlideAjax('PopulateDemo');
    ga.addParam('sysparm_name', 'popAssignmentGroup');
    ga.addParam('sysparm_cmdb_ci', g_form.getValue("cmdb_ci"));
    ga.getXML(getResponse);

    function getResponse(response) {
        var answer = response.responseXML.documentElement.getAttribute("answer");
	g_form.setValue('assignment_group', answer);
    }


}

 

Script Include

var PopulateDemo = Class.create();
PopulateDemo.prototype = Object.extendsObject(AbstractAjaxProcessor, {

popAssignmentGroup : function(){
   var cmdbCI = this.getParameter('sysparm_cmdb_ci');
   var gr = new GlideRecord('cmdb_ci');
   if(gr.get(cmdbCI){
      return gr.getValue("support_group");
   }
 return;
},

type: 'PopulateDemo'
});

 

Feel free to mark correct, If I answered your query.

Will be helpful for future visitors looking for similar questions šŸ™‚

Best Regards
Aman Kumar