繁体   English   中英

是否可以在每个Ajax请求中执行自定义代码,而无需将代码手动添加到Ext Js中的每个ajax代码中?

[英]Is it possible to execute custom code in every Ajax request without having manually add that code to every ajax code in Ext Js?

如果用户已登录,则ajax请求可以正常工作。 当会话无效时,ajax返回登录屏幕,用户可以将登录屏幕视为ajax内容。 是否可以在Ext Js中添加自定义代码,该代码将在每个ajax请求中运行,以检查会话是否仍然有效,如果会话无效,则JavaScript将重定向到登录页面,否则它将继续正常执行Ajax请求。

Ext.ajax是单例,因此您可以为所有请求错误定义一个全局处理程序。

如果未授权用户,则服务器端代码将需要返回HTTP 403或类似信息。 将其放在您的代码中(仅一次):

Ext.Ajax.on('requestexception', function(conn, response, options) {
    if (response.status == 403) {
       Ext.MessageBox.alert('Authentication', 'You are not logged in.');
       /* you can display a login box or something here */
    }
};

如果AJAX请求由于会话已过期而失败,则可以在代码中优雅地处理它。

options参数包含AJAX请求选项,因此,如果向用户显示一个登录框并重新进行身份验证,则可以重新提交他们自动发出的原始AJAX请求。 该过程对于发出AJAX请求的所有其余现有代码应该是无缝的。

在服务器中检查会话是否仍然有效。 不在JavaScript中。

我们不信任客户。

您可以通过两种方式修改ajax流程:

1-服务器端:收到请求后,检查会话-如果用户未登录或会话过期,则返回HHTP 403(=未授权)。 2-客户端:作为ajax响应处理程序的一部分,检查错误403。如果返回错误,则请求登录并将其发送到服务器,然后在登录成功后重新发送原始请求。

如果您不使用太多现成的ajax库,那很容易。 如果是这样,请查看其功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM