Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Client-side code should not use synchronous AJAX methods (e.g., g_form.getReference, getXMLWait)

app
Mega Expert
created 2mo ago in IT Service Management
 

Hi,

Need a solution that for client side code,  synchronous AJAX methods should not be used then how we can use some other thing like script include for the requirement.

Script: function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var caller = g_form.getReference('caller_id');
if (caller.vip == 'true')

{
g_form.setValue('urgency','1');
g_form.setValue('impact','2');
}
else
return;
//Type appropriate comment here, and begin script below

}

 

Please suggest me the solution that how this can be improved by not using g_form.getReference().

I have also tried this by using UI policy but still not getting any appropriate result.

 

Thanks

1 ACCEPTED SOLUTION

Shweta KHAJAPUR
Tera Guru

Hi,

Try to add some logs,

var chkUserRole = Class.create();



chkUserRole.prototype = Object.extendsObject(AbstractAjaxProcessor, {



 chkCallerUserRole: function() {



 var caller = this.getParameter('sysparm_caller');
gs.addInfoMessage('caller_sys_id...'+caller);

var vip = gs.getUser().getUserByID(caller).getRecord().getValue('vip');

gs.addInfoMessage('vip...'+vip);

 return vip;


 }



});

 

 

Client script as below,

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


//Type appropriate comment here, and begin script below
 var ga = new GlideAjax('chkUserRole');



ga.addParam('sysparm_name','chkCallerUserRole');



ga.addParam('sysparm_caller',g_form.getValue('caller_id'));



ga.getXML(HelloWorldParse);


 


function HelloWorldParse(response) {



 var answer = response.responseXML.documentElement.getAttribute("answer");

g_form.addInfoMessage('answer...'+answer);

 if(answer=='1')

{

 g_form.setValue('impact','2');
 g_form.setValue('urgency','1');



}

}

}

 

View solution in original post

26 REPLIES 26

Hi Omkar,

 

Created a new script include also. but nothing.

You missed Bracess '{}' after if statement.

Shweta KHAJAPUR
Tera Guru

Hi,

Modify your script include as below and client collable should be checked,

var chkUserRole = Class.create();



chkUserRole.prototype = Object.extendsObject(AbstractAjaxProcessor, {



 chkCallerUserRole: function() {



 var caller = this.getParameter('sysparm_caller');



 return gs.getUser().getUserByID(caller).getRecord().getValue('vip');



 }



});

Hello shweta,

 

Sorry but nothing happened.

 

thanks

Modify client script if part,

if(answer=='1')


g_form.setValue('impact','2');
g_form.setValue('urgency','1');


}