将错误函数添加到XPage部分刷新(dojo.xhrPost)事件?

Eri*_*ick 3 javascript dojo xpages

我有一个页面,它依赖于一些部分刷新进行交互.我不打算使用保持会话活动机制,但我想捕获部分刷新的错误响应,提醒用户他们的会话已过期/需要刷新,一旦他们执行了window.location.reload承认警报.具体而言,由用户尝试部分刷新(并且本质上,纯粹通过CSJS)进行事件驱动.

我知道使用Chrome DevTools时,部分刷新显示为Post请求,它返回html的部分(刷新区域)加上任何必需的CSJS.我也知道,正如Dojo 1.6中针对dojo.xhr(PostGet)所记录的那样,它支持一个错误处理参数,通过它我可以传递我想要创建的函数.我目前不确定如何将此函数添加到我的dojo.xhrPost请求中.

看过这个XSnippet,"Dojo xhr请求的缓存预防",它允许在dojo.xhr请求中添加preventCache选项,我觉得这是正确的方法.再一次,这是我不确定的实现.我很失望地发现它引用的链接是源代码,http://www.juliusbuss.de/web/youatnotes/blog-jb.nsf/dx/a-big-issue-for-mobile-web-apps- with-xpages-for-iphone-and-ipad-and-how-to-solve-it..htm,对我不起作用.

  1. 我不确定我是否可以使用相同的参数,参数[1],如引用的XSnippet(或哪个是最佳参数位置).
  2. 另外,我不是100%确定是否需要为dojo xhrPost事件进一步指定它,或者只是使用dojo.xhr就足够了.

会喜欢更有经验的观点.

Sve*_*ach 6

以下是如何为每个partialRefresh覆盖错误函数的示例:

// hijack the dojo function if required
if( !dojo._xhr )
    dojo._xhr = dojo.xhr;

var _error;

dojo.xhr = function(){       
    try{
        var args = arguments[1];  
        _error = args["error"]; // save the original error function

        // add your own method
        args["error"] = function(arg1, arg2){
            alert( "Hello World!" );
            _error(arg1, arg2);
        }
        arguments[1] = args;
    }catch(e){}
    dojo._xhr( arguments[0], arguments[1], arguments[2] );
}
Run Code Online (Sandbox Code Playgroud)