You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ServiceNow应用:脚本包含函数的导入导出及跨文件调用求助

在ServiceNow中调用Script Includes里的doMultiply函数

1. 先确认Script Include的配置与写法

要让doMultiply能被外部调用,首先要保证Script Include的定义符合ServiceNow的规则:

  • 如果是跨应用调用,需将Script Include设置为全局(Global);同一应用内调用可不用全局,但要确保作用域一致。
  • 函数定义分两种方式:

    方式A:原型方法(需实例化调用)

    假设你的Script Include名称为MathUtils,代码如下:
    var MathUtils = Class.create();
    MathUtils.prototype = {
        initialize: function() {},
    
        // 定义doMultiply原型方法
        doMultiply: function(a, b) {
            return a * b;
        },
    
        type: 'MathUtils'
    };
    

    方式B:静态方法(无需实例化)

    直接把函数挂载到类上,或者用ES6静态类写法:
    var MathUtils = Class.create();
    MathUtils.prototype = {
        initialize: function() {},
        type: 'MathUtils'
    };
    // 添加静态方法
    MathUtils.doMultiply = function(a, b) {
        return a * b;
    };
    
    // 或者ES6风格(ServiceNow支持)
    class MathUtils {
        static doMultiply(a, b) {
            return a * b;
        }
    }
    

2. 在其他JavaScript文件中调用的方式

情况1:调用原型方法

先实例化Script Include,再调用函数:

// 创建实例
var mathTool = new MathUtils();
// 调用doMultiply
var calculationResult = mathTool.doMultiply(4, 5);
gs.info(calculationResult); // 输出20

情况2:调用静态方法

无需实例化,直接通过类名调用:

var calculationResult = MathUtils.doMultiply(4, 5);
gs.info(calculationResult); // 输出20

3. 客户端脚本调用注意事项

如果要在UI脚本、客户端脚本等前端代码中调用,不能直接实例化服务器端的Script Include,必须用GlideAjax做AJAX请求:

客户端代码:

var ajaxCall = new GlideAjax('MathUtils');
// 指定要调用的函数名
ajaxCall.addParam('sysparm_name', 'doMultiply');
// 传递参数
ajaxCall.addParam('sysparm_num1', 4);
ajaxCall.addParam('sysparm_num2', 5);
// 获取返回结果
ajaxCall.getXMLAnswer(function(response) {
    alert('计算结果:' + response);
});

对应的Script Include需继承AbstractAjaxProcessor:

var MathUtils = Class.create();
MathUtils.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    doMultiply: function() {
        // 获取客户端传递的参数
        var num1 = this.getParameter('sysparm_num1');
        var num2 = this.getParameter('sysparm_num2');
        return parseInt(num1) * parseInt(num2);
    },
    type: 'MathUtils'
});

内容的提问来源于stack exchange,提问作者Vetrivelan T

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:46:18