【问题标题】:How to call script include from the client script service-now without GlideAjax如何在没有 GlideAjax 的情况下从客户端脚本服务调用脚本包含
【发布时间】:2023-02-12 04:38:07
【问题描述】:

我们今天在客户端脚本上获取数据的常见流程:

OnChange 客户端脚本:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }
    var user = g_form.getValue('u_user');
    //Call script include
    var ga = new GlideAjax('global.sampleUtils');   //Scriptinclude
    ga.addParam('sysparm_name', 'getUserDetails'); //Method
    ga.addParam('userId',user); //Parameters
    ga.getXMLAnswer(getResponse);
    function getResponse(response){
        console.log(response);
        var res = JSON.parse(response);
        console.log(res);
        g_form.setValue('u_phone',res.mobile_phone);
        g_form.setValue('u_email',res.email);
    }
}

脚本包括:

var sampleUtils = Class.create();
sampleUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getUserDetails: function(){ //Function
        var userId = this.getParameter('userId'); //Params
        obj = {};
        var grSysUser = new GlideRecord('sys_user');
        if (grSysUser.get(userId)) {
            obj.mobile_phone =  grSysUser.getValue('mobile_phone');
            obj.email =  grSysUser.getValue('email');
        }
        gs.addInfoMessage(obj+JSON.stringify(obj));
        return JSON.stringify(obj);
    },
    type: 'sampleUtils'
});

【问题讨论】:

    标签: saas servicenow


    【解决方案1】:

    作为glideAjax的替代品,您可以EfficientGlideRecord

    new EfficientGlideRecord('sys_user')
    .addQuery('sys_id', newValue) //On Change client script, we will get sys_id of user in newValue variable
    .addField('mobile_phone', true) //Get display value
    .query(function (egrSysUser) {
        if(egrSysUser.next()) {
            g_form.setValue('phone', egrSysUser.getDisplayValue('mobile_phone'));
        }
    });
    

    什么是高效 GlideRecord?

    EfficientGlideRecord 是使用 GlideAjax 的最佳替代方式。 它是一个客户端 API 类,您可以从中执行异步客户端 GlideRecord 样式查询,同时最大限度地提高性能。

    好处:

    1. 低代码配置,性能大幅提升。
    2. 无需担心安全漏洞,因为它强制执行 ACL。
    3. 不再担心创建新的客户端可调用脚本包含和维护 那里的逻辑。

      依赖项:

      要使用EfficientGlideRecord,我们需要提交附加的更新集或从给定链接https://github.com/thisnameissoclever/ServiceNow-EfficientGlideRecord/releases 找到最新版本。 将包添加到 Portal 记录 -> JS Includes。

      就是这样,你很擅长使用 EfficientGlideRecord 语法。

      要了解有关 EfficientGlideRecord 的更多信息,请参阅以下链接: https://snprotips.com/efficientgliderecord

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-04
      • 2016-12-15
      • 1970-01-01
      相关资源
      最近更新 更多