向XPages部分刷新(dojo.xhrPost)事件添加错误函数



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

我从使用Chrome DevTools中知道,部分刷新显示为Post请求,它返回html的部分(刷新区域)以及任何必要的CSJS。我还知道,正如Dojo1.6中关于Dojo.xhr(Post and Get)的文档所述,xhr支持一个错误处理参数,通过该参数我可以传递我想要创建的函数。我目前不确定如何将此函数添加到我的dojo.xhrPost请求中。

看过这个XSnippet,"针对Dojo xhr请求的缓存保护",它允许将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. 我不确定是否可以使用与引用的XSnippet中相同的参数argument[1](或者哪个是最佳的参数位置)
  2. 此外,我不能100%确定是否需要为dojo-xhrPost事件进一步指定这一点,或者仅仅使用dojo.xhr是否足够好

我喜欢更有经验的视角。

以下是如何为每个部分覆盖错误函数的示例刷新

// 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] );
}

最新更新