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

时间:2014-02-14 16:09:21

标签: javascript dojo xpages

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

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

看过this XSnippet, "Cache Prevention for Dojo xhr requests",它允许将preventCache选项添加到dojo.xhr请求中,我觉得这是正确的方法。再一次,这是我不确定的实现。我很失望地发现它引用的链接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就足够了。
  3. 会喜欢更有经验的观点。

1 个答案:

答案 0 :(得分:5)

以下是如何为每个 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] );
}