ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

javascript-如何触发onError客户端事件

2019-11-20 05:34:32  阅读:441  来源: 互联网

标签:xpages-ssjs javascript xpages


我在click事件处理程序中有一个带有一些SSJS代码的按钮.它基本上会调用说为true或false的Java方法.因此,我还要触发onComplete和onError CSJS脚本:onComplete表示成功,onError表示失败.不幸的是,我还没有弄清楚如何触发onError事件-至少不是以一种优雅的方式.我的第一种方法是返回200以外的HTTP状态代码(此处为500).这会触发onError,但会在浏览器控制台中生成难看的错误消息.

那么,是否还有其他选项可以控制SSJS的结果来调用onComplete或onError脚本?

更新

同时,我找到了解决方法,但是我仍然对问题的解决方案感兴趣.

我的解决方法不是使用onComplete / one rror脚本,而是通过SSJS直接在我的SSJS中调用两个成功/失败脚本

view.postscript("success()");

view.postscript("fail()");

我认为这是一种更清洁的方法.

解决方法:

您可以在SSJS或Java事件中发回自己的状态代码:

<xp:this.action><![CDATA[#{javascript:facesContext.getExternalContext().getResponse().setStatus(999);}]]></xp:this.action>

为了防止控制台记录日志,可以使用Dojo的xhr请求的failOk参数将其禁用(对所有请求禁用控制台日志记录):

if( !dojo._xhr )
    dojo._xhr = dojo.xhr;

dojo.xhr = function(){        
    try{
        var args = arguments[1];   
        args["failOk"] = true;
        arguments[1] = args;
    }catch(e){}

    dojo._xhr( arguments[0], arguments[1], arguments[2] );
}

现在,您可以向事件添加错误处理程序方法:

<xp:this.onError><![CDATA[errorHandler(arguments[0], arguments[1])]]></xp:this.onError>

在该方法中,您可以从事件中检查状态代码,并在代码匹配时执行所需的操作:

<script>
    function errorHandler(err, xhr){
        if( err.status == 999 ){
            // whatever
        }
    }
</script>

标签:xpages-ssjs,javascript,xpages
来源: https://codeday.me/bug/20191120/2041698.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有