gpt4 book ai didi

javascript - ServiceNow 客户端脚本异步查询以停止在新服务门户中提交 onSubmit

转载 作者:行者123 更新时间:2023-12-02 14:09:08 26 4
gpt4 key购买 nike

我有一个客户端脚本,它执行 GlideRecord 查询来检查是否已存在同名记录。

如果找到匹配的记录,我们需要停止提交表单。

我们在 CMS 门户上运行良好。

但是,新的 Service Portal 不支持同步 GlideRecord 查询。

所以我不能使用 gr.query() 我需要使用回调,例如 gr.query(callback)。

问题是,由于回调是异步的,它实际上并没有阻止表单的提交!

g_form.subscribed = false;不起作用。这是因为在回调有机会检索值之前,脚本会继续提交表单。

我们如何根据异步回调返回的值来停止表单的提交?出于同样的原因,我们无法使用 GlideAjax,不再支持 getXMLWait()。

这是我尝试在新服务门户中使用的客户端脚本。

function onSubmit() {

var group_name = g_form.getValue('u_group_name');
g_form.hideAllFieldMsgs('error');

/*Check if group already exists*/
var rec = new GlideRecord('u_auth_group');
rec.addQuery('u_group_name', u_group_name);
rec.query(getAccountResponse);
}

function getAccountResponse(rec) {
while (rec.next()) {
g_form.showFieldMsg('u_group_name', " Group Name exists already, please select another group name",'error');
g_form.submitted = false; //DOES NOT STOP THE FORM FROM BEING SUBMITTED
return false;
}
}

这是在 CMS 门户中运行的现有脚本。

function onSubmit() {

var group_name = g_form.getValue('u_group_name');
g_form.hideAllFieldMsgs('error');

/*Check if group already exists*/
var rec = new GlideRecord('u_auth_group');
rec.addQuery('u_group_name', u_group_name);
rec.query(getAccountResponse);
while (rec.next()) {
g_form.showFieldMsg('u_group_name', " Group Name exists already, please select another group name",'error');
g_form.submitted = false; //Stops the form from being submitted if a result is returned
return false;
}
}

最佳答案

我们正处于赫尔辛基补丁 5 中,所以我们正在经历类似的成长烦恼。我们很幸运地使用了以下结构。服务器端仍然有可用的 Glide 系统资源,包括 Glide Record。

您可以尝试将“提交”操作包装在自定义事件处理程序中。

尝试:

客户端:

c.createGroup = function(groupName){
return c.server.get({
grpname : groupName
}.then(function(response){
if (response.data.result == true){
//don't submit
}
else{
//submit
}
}

服务器端

data.result = false
data.grpname = input.grpname

function checkGroupExists(data.grpname){
/*Check if group already exists*/
var rec = new GlideRecord('u_auth_group');
rec.addQuery('u_group_name', data.grpname);
rec.limit(1); //you only need to find one match
rec.query()
while (rec.next()){
data.result = true
}
}

然后您可以将此事件处理程序绑定(bind)到 UI 中的某些操作。

关于javascript - ServiceNow 客户端脚本异步查询以停止在新服务门户中提交 onSubmit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799841/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com