欢迎光临
我们一直在努力

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

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

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

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

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

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

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

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

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

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。