我正在向后端制作Ajax.request,我无法控制。
此请求有时会将我重定向到登录页面,而我的response.status是200而不是302.到目前为止,我试过这个:
Ext.Ajax.on("requestexception", function(conn, response, options, eOpts){
console.log(conn);
console.log(response);
console.log(options);
console.log(eOpts);
});
Ext.Ajax.request({
url : 'someUrl'
params : params
});
显然这种重定向不是我所期望的,所以我需要发现304发生的时间。
大多数都有某种工作要做。
有什么想法吗?
的问候。
答案 0 :(得分:0)
据我所知,http重定向完全由浏览器处理。因此,如果您无法访问后端,则无法检测到重定向。
当您被重定向到登录页面时,您的会话似乎已过期,您需要再次进行身份验证。
您可以创建一个函数,在实际响应中检测到登录页面后立即发送登录信息。
sendLogin: function ( params, successCallback, failureCallback, scope ) {
Ext.Ajax.request({
url: "loginurl",
params: params,
success: function ( response, options ) {
successCallback.call( scope || this, response, options );
},
failure: function ( response, options ) {
failureCallback.call( scope || this, response, options );
}
});
}
doRequest: function ( params, successCalback, failureCallback, scope ) {
var me = this;
Ext.Ajax.request({
url: "someurl",
success: function ( response, options ) {
if ( isLoginPage( response ) ) {
this.sendLogin(
loginParams,
function ( successResponse, successOptions ) {
me.doRequest( params, successCallback, failureCallback, scope );
},
function ( failureResponse, failureOptions ) {
failureCallback.call( scope || this, failureResponse, failureOptions );
},
me
);
} else {
successCallback.call( scope || this, response, options );
}
},
failure: function ( response, options ) {
failureCallback.call ( scope || this, response, options );
}
});
}
使用doRequset
发送您的实际请求。成功案例检查响应是否为登录页面。如果是,则发送登录请求。当登录请求成功时,将再次使用其参数调用doRequest函数。