我有一个由服务器端 Ajax 数据源支持的数据表表单(它在后端使用 struts 操作来处理请求、获取数据并发送 JSON 响应)。
服务器端操作需要在身份验证模式下运行,即需要有一个活动会话。
处理数据表中会话超时错误的最佳方法是什么?目前它只是显示 JSON 格式错误,这对于用户来说不是最佳选择。出于明显的原因(兼容性、未来的可维护性等),我不想去更改数据表代码。有没有一种巧妙的方法来处理错误?
我正在考虑在 JSON 响应中嵌入错误消息,但是在前端流程中拦截它的最佳位置在哪里?
编辑:我认为进行此类后处理的最佳位置是在 fnServerData 中,我对吗?
我会发回包含某种错误代码的 JSON 响应。要处理它,您需要像您猜测的那样定义 fnServerData 。但是,由于这个原因,在使用错误回调之前我会强烈考虑用例:
错误只是获取资源时出现的任何问题,并使用状态代码。假设会话在服务器上终止。用户请求数据,服务器返回500错误。错误回调说:“好吧,这很糟糕。让我们重定向到登录页面。”一切都很好。
然而......用户提出了请求。无论出于何种原因(大数据集、网络条件),该请求都会花费一点时间。与此同时,用户决定导航到另一个页面,从而中断呼叫响应循环。如果没有响应,错误回调将被触发,用户将被重定向到登录页面(或错误回调中设置的任何函数)。
问题是,我不知道“会话已过期”的状态代码(不过,我很想知道!我不介意在这里犯错!),以便捕获和处理。
我并不是说你“不应该”或“不能”使用错误回调。但该函数必须考虑会话过期以外的错误。您可能需要根据状态代码进行不同的处理。如果您的函数能够优雅地处理所有这些情况,那就太好了!在一个应用程序中,我们确实重定向到登录页面,并且错误回调通常会由于误报而出错,将用户错误地转储到登录页面。对于“会话已过期”的情况,我们通过 JSON 消息在成功回调中捕获它。
[在 Dave 的精彩评论后更新:] 如果您的服务器返回一个有用的服务器错误(401、403、550 或任何在您的场景中有意义的错误),则在 .ajax() 调用中使用 fnServerData 和 statusCode 参数(这太拗口了! )也会同样有效。我认为这是相同的工作量:通过您已经编写的方法返回 JSON,或者通过您应该已经有权访问的方法返回状态错误。选择对您有意义的一项。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)