- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2018 01:59 AM
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
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2018 03:03 AM
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');
}
}
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2018 03:32 AM
Hi Simon,
Ace Report came and servicenow say no to use g_form.getReference in client scripts.
Thanks
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2018 04:42 AM
var caller = g_form.getReference('caller_id')
caller.vip;
That is synchronous and shouldnt be used but with a callback its async can can be used.
Taken from:
Do not make synchronous JavaScript calls
The mobile platform does not allow synchronous JavaScript calls. The g_form.getReference() method must now have the callback parameter defined. For example:
g_form.getReference(fieldName, callback)
Be sure that all g_form.getReference() calls include the callback parameter. For example, the following script does not include a callback and is incompatible with the mobile platform:
var userName = g_form.getReference('assigned_to').user_name;
g_form.setValue('u_assigned_user_name', userName);
The following script has been updated to include the callback and is compatible with the mobile platform:
g_form.getReference('assigned_to', function(gr) {
g_form.setValue('u_assigned_user_name', gr.user_name);
});
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2018 03:32 AM
Hi,
Your script include name must be same as object. Please create script include by name chkUser
Role
chkUserRole
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2018 03:36 AM
Hi
As i mentioned earlier. Create a new Script Include. You have messed it up.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-27-2018 03:37 AM
