GlideAjax returning null value

Satanik1
Giga Guru

Hello,

I am new in scripting. I have been trying the below code, but its returning null value. What wrong I am doing?

Script Include:

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

	getName: function() {
  var gr = new GlideRecord("Group");
  gr.get(this.getParameter('sysparm_username'));
  return gr.name;
 },
	
    type: 'AssignmentGroupName'
});

 

Client Script:

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

	var ga = new GlideAjax('AssignmentGroupName');
	ga.addParam('sysparm_name','getName');
	ga.addParam('sysparm_username',g_form.getValue('assignment_group'));
	ga.getXML(GroupNameParse);
	//alert("Group: "+g_form.getValue('assignment_group'));
	
	function GroupNameParse(response){
		var output = response.responseXML.documentElement.getAttribute("answer");
		alert("Group Name: "+output);
	}
}
1 ACCEPTED SOLUTION

Satanik1
Giga Guru

Hello Everybody,

 

Thank you so much to each one of you for helping me in resolving the issue.

Finally I got the resolution from another forum post itself. My script is working. But can somebody please tell me why the usual way did not work and below two lines have worked?

 

this.getRootElement().setAttribute('groupinfo',x); (Script Include)

response.responseXML.documentElement.getAttribute("groupinfo"); (Client Script)

 

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

    var ga = new GlideAjax('AssignmentGroupName');
    ga.addParam('sysparm_name', 'getName');
    ga.addParam('sysparm_grpname',g_form.getValue('assignment_group'));
    ga.getXML(GroupNameParse);
   
 
    function GroupNameParse(response) {
        var answer = response.responseXML.documentElement.getAttribute("groupinfo");
        alert(answer);
		g_form.setValue('short_description',answer);
   
}
}

 

Script Include:

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

	getName: function() {
		
		var x = '';
		gs.addInfoMessage('Entered the script');
		var gr = new GlideRecord("sys_user_group");
		gr.addQuery('sys_id',this.getParameter('sysparm_grpname'));
		gr.query();
		
		if(gr.next()){
			gs.addInfoMessage('Entered the IF');
			x = gr.getValue('name');
			gs.addInfoMessage(x);
			this.getRootElement().setAttribute('groupinfo',x);
			//return x;
		}
//  gr.get(this.getParameter('sysparm_grpname'));
return x;
 },
	
    type: 'AssignmentGroupName'
});

View solution in original post

11 REPLIES 11

Hello, Glad your script is working now. As I pointed out above you simply needed to update your script include to return a string by using gr.getValue('name') instead of gr.name. The method you used worked because you set x to gr.getValue('name'). Remember for future use that returns from GlideAjax must be strings. When working with values in GlideRecord objects they must be cast to strings using either getValue() or toString(). You can even return multiple values by creating an object then stringifying it . On the client script you can parse the returned stringified object and get access to the multiple values. Best, David

That's quite a helpful information David. Thank you so much for clarifying.