javascript - 处理数据表中的 session 超时(使用服务器端数据源处理)

标签 javascript jquery struts datatables struts-1

我有一个由服务器端 Ajax 数据源支持的数据表表单(它在后端使用 struts 操作来处理请求、获取数据并发送 JSON 响应)。 服务器端操作需要在经过身份验证的模式下运行,即需要有一个事件 session 。

处理数据表中 session 超时错误的最佳方法是什么?目前它只是显示 JSON 格式错误,这对用户来说不是最佳选择。出于显而易见的原因(兼容性、 future 可维护性等),我不想去更改数据表代码。有没有一种处理错误的巧妙方法?

我一直在考虑在 JSON 响应中嵌入错误消息,但在前端流程中拦截错误消息的最佳位置在哪里?

编辑:我认为进行此类后处理的最佳位置是在 fnServerData 中,对吗?

最佳答案

我会返回一个包含某种错误代码的 JSON 响应。要处理它,您需要按照您的推测定义 fnServerData。但是,出于这个原因,在使用错误回调之前我会强烈考虑用例:

错误只是获取资源的任何问题,并使用状态代码。假设 session 在服务器上终止。用户请求数据,服务器发回 500 错误。错误回调说,“好吧,那太糟糕了。让我们重定向到登录页面。”一切都很好。

但是……用户提出了一个请求。无论出于何种原因(大数据集、网络条件),请求都需要一点时间。与此同时,用户决定导航到另一个页面,从而中断调用-响应循环。如果没有响应,错误回调将被触发,用户将被重定向到登录页面(或错误回调中设置的任何功能)。

问题是我没有意识到“ session 已过期”的状态代码(不过我很想知道!我不介意在这里犯错!)以便捕获和处理。

我并不是说您“不应该”或“不能”使用错误回调。但是该功能必须考虑 session 过期以外的错误。您可能需要根据状态代码进行不同的处理。如果您的函数可以优雅地处理所有这些情况,那就太好了!在一个应用程序中,我们确实要重定向到登录页面,错误回调通常会由于误报而跳闸,将用户错误地转储到登录页面。对于“ session 已过期”的情况,我们通过 JSON 消息在成功回调中捕获它。

[在 Dave 的精彩评论后更新:] 如果您的服务器返回一个有用的服务器错误(401、403、550 或任何在您的场景中有意义的错误),那么在 .ajax() 调用中使用带有 statusCode 参数的 fnServerData(这是一口!)也可以。我认为这是相同的工作量:通过您已经编写的方法返回 JSON,或者通过您应该已经可以访问的方法返回状态错误。选择对您有意义的一个。

关于javascript - 处理数据表中的 session 超时(使用服务器端数据源处理),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7658975/

相关文章:

javascript - 使用 Jquery AJAX 进行 Stripe 支付? (仅限 JavaScript)

java - 如何访问 Controller 上 Struts ActionForm 中的标签值

jquery - 按单个数据属性中的多个值进行过滤

javascript - 为什么我不能通过 ID(没有 iframe)访问这个动态加载的 DOM 元素?

java - Tomcat 7.0.32 无法部署我的项目

java - Java 中的 ASCII 到 UTF-8 的转换

javascript - 在网页内的图像上标记矩形以选择感兴趣的区域

javascript - Web API - 无法加载资源 : the server responded with a status of 404

javascript - AngularJS:无法实例化我自己的模块

javascript - Vimeo 播放器在后台全屏显示