温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在ServiceNow的CSM中无法使用Ajax API异步调用的曲线救国方式

发布时间:2020-10-17 13:55:07 来源:网络 阅读:429 作者:ServiceNow 栏目:云计算

又是一年1024节日,还是应该放点干货出来,才能证明我们还活着!


在CSM(**Customer Service Management**)中我们发现CSM的标准用户是没有SNC_INTERAL角色的,以至于在AJAX代码执行的时候XML方式不会加载ITEM项,导致在ServicePortal页面一直会报AJAX异常(这个坑了我们好久!)。可能SN的初衷就是这么设计的,不允许没有internal角色的用户去使用异步调用。但是现实是很多数据需要在字段onchange的时候就把某些信息填进去,即用户很懒。


既然用户想偷懒,SN又不让我们使用GlideAjax, 我们经过反复的测试还是发现一个曲线救国的方式。具体操作如下:


  1. 使用Inbound Message:创建一个REST API,这时就模拟了GlideAjax去调用的方式去获取服务器数据。

    在ServiceNow的CSM中无法使用Ajax API异步调用的曲线救国方式

  2. 回归原始:使用JQuery去调用REST API来执行异步更新。

    在ServiceNow的CSM中无法使用Ajax API异步调用的曲线救国方式

  3. 在UI Script中将JQuery的原始库代码复制进去,并加入$$j = JQuery.noconfit(),$$J可以自己决定。注意:千万不要勾选global选项。后悔药不好找,当然我有~~~~~。

    在ServiceNow的CSM中无法使用Ajax API异步调用的曲线救国方式

  4. 在service portal端注入对应的依赖关系,其依赖关系对应的JS Include脚本即对应的UI Script库。而在Fufiller端可直接使用上面定义的$$j即可。

    在ServiceNow的CSM中无法使用Ajax API异步调用的曲线救国方式

    在ServiceNow的CSM中无法使用Ajax API异步调用的曲线救国方式



最后更新:此文仅作为前期开发探讨使用,是一个workaround,它在新的版本比如马德里中会出现异常。其实最终问题是源于外部用户没有权限所致,在加载CSM模块的时候,系统并未给外部用户开放任何权限,以此来区别。那么最终解决方案其实是在acl中添加对应ajax方法的权限使用即可。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI