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

时间:2011-04-13 11:16:17

标签: javascript ajax extjs

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

3 个答案:

答案 0 :(得分:2)

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

如果用户未获得授权,您的服务器端代码将需要返回HTTP 403或simmilar。把它放在代码中的某个地方(只有一次):

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请求的所有其他现有代码,该过程应该是无缝的。

答案 1 :(得分:1)

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

我们不信任客户。

答案 2 :(得分:0)

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

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

如果你没有使用太多现成的ajax库,这很容易。如果是,请查看其功能。