auto Populating the values in a form using glideajax and script include

Vijay8
Giga Contributor

Hi All,

I have a requirement to auto populate the field values (email, mobile, manager, department) when I change the user Using script include and glide ajax 

 

I tried the script below but not working fine 

 

please help

 

 

Client script onchange 

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

var userselected = g_form.getValue('u_user');

var userdetails = new GlideAjax('global.userDetailsUtil');

userdetails.addParam('sysparm_name', 'getUserDetails');

userdetails.addParam('sysparm_userselect', userselected);

userdetails.getXMLAnswer(function(response) {

var userObj = JSON.parse(response);

g_form.setValue('u_mobile', userObj.contactNo);

g_form.setValue('u_department', userObj.department);

g_form.setValue('u_email', userObj.email);

g_form.setValue('u_manager', userObj.manager);

});
}

 

Script include

 

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

getUserDetails: function() {
var uerObj = {};

var gr= GlideRecord('sys_user');
if(gr.get(this.getParameter('sysparm_userselect'))){
userObj.contactNo = gr.getValue('mobile_phone');
userObj.manager = gr.getValue('manager');
userObj.email = gr.getValue('email');
userObj.department = gr.getValue('department');

}
return JSON.stringify(uerObj);
},

type: 'userDetailsUtil'
});

 

 

1 ACCEPTED SOLUTION

Ashutosh Munot1
Kilo Patron
Kilo Patron

Hi,
Use this one:

Client script:

function onLoad() {
    //Type appropriate comment here, and begin script below
    var getEmailaddr = new GlideAjax('HelloWorld');
    getEmailaddr.addParam('sysparm_name', 'getJsonBack');
    getEmailaddr.addParam('sysparm_userID', g_user.userID);
    getEmailaddr.getXML(populateField);

    function populateField(response) {
        var obj1 = response.responseXML.documentElement.getAttribute('answer');
        var userObj= JSON.parse(obj1);
        g_form.setValue('u_mobile', userObj.contactNo);

g_form.setValue('u_department', userObj.department);

g_form.setValue('u_email', userObj.email);

g_form.setValue('u_manager', userObj.manager);		

    }
}

 

Script include:

 var usr = this.getParameter('sysparm_userID');
        var obj = {};
        var gr = new GlideRecord('sys_user');
        gr.addQuery('sys_id', usr);
        gr.query();
        if (gr.next()) {
        obj['contactNo']= gr.mobile_phone.toString();
	obj['department'] = gr.department.toString();
obj['manager'] = gr.manager.toString();
obj['email'] = gr.email.toString();
	
        }
		
var dept = JSON.stringify(obj);
return dept;


Thanks,
Ashutosh

View solution in original post

7 REPLIES 7

Jaspal Singh
Mega Patron
Mega Patron

Hi Vijay,

 

Can you use below in script include

var useris=this.getParameter('sysparm_userselect');

var gr= GlideRecord('sys_user');

gr.addQuery('sys_id',useris);

gr.query();

if(gr.next())

{
//if(gr.get(this.getParameter('sysparm_userselect'))){
userObj.contactNo = gr.getValue('mobile_phone');
userObj.manager = gr.getValue('manager');
userObj.email = gr.getValue('email');
userObj.department = gr.getValue('department');

}

Chander Bhusha1
Tera Guru

Hi Vijay,

In getXMLAnswer it will return only one value that is anwer here you need object so replace the client script with this code.

And the userobject is not used correctly in script include

Use getXML to get the answer 

Update the client script as below:

 

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

var userselected = g_form.getValue('u_user');

var userdetails = new GlideAjax('global.userDetailsUtil');

userdetails.addParam('sysparm_name', 'getUserDetails');

userdetails.addParam('sysparm_userselect', userselected);

userdetails.getXML(populate) ;



function populate(response) {
 var answer = response.responseXML.documentElement.getAttribute("answer");
var userObj = JSON.parse(answer);

g_form.setValue('u_mobile', userObj.contactNo);

g_form.setValue('u_department', userObj.department);

g_form.setValue('u_email', userObj.email);

g_form.setValue('u_manager', userObj.manager);


	
 }






	

}

 

And in the scirpt include you have to use the parameter value as well.

 

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

getUserDetails: function() {
var uerObj = {};

var gr= GlideRecord('sys_user');
gr.get(this.getParameter('sysparm_userselect'));

userObj.contactNo = gr.getValue('mobile_phone');
userObj.manager = gr.getValue('manager');
userObj.email = gr.getValue('email');
userObj.department = gr.getValue('department');

return JSON.stringify(userObj);
},

type: 'userDetailsUtil'
});

 

 

Mark helpful and correct if it helps

Thanks,

CB

Perfect, Excatley what I needed 

Working fine 

Thank you 

Hi Vijay,

If it resolved you question then can you please mark my response as correct and helpful so that others can refer this solution in future.

It will move this to solved question queue.

Thanks,

CB