成都网站建设设计

将想法与焦点和您一起共享

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

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

我们提供的服务有:成都网站建设、网站建设、微信公众号开发、网站优化、网站认证、芝罘ssl等。为成百上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的芝罘网站制作公司

在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方法的权限使用即可。


名称栏目:在ServiceNow的CSM中无法使用AjaxAPI异步调用的曲线救国方式
文章起源:http://chengdu.cdxwcx.cn/article/iggdeh.html