如何在 Sencha Touch Ajax 请求中发现 302 响应
Posted
技术标签:
【中文标题】如何在 Sencha Touch Ajax 请求中发现 302 响应【英文标题】:How can I spot a 302 response in Sencha Touch Ajax Request 【发布时间】:2014-07-18 02:38:54 【问题描述】:我正在向我无法控制的后端发出 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 何时发生。
大多数情况下都有某种解决方法。
有什么想法吗?
问候。
【问题讨论】:
【参考方案1】:据我所知,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 函数将再次调用它的参数。
【讨论】:
以上是关于如何在 Sencha Touch Ajax 请求中发现 302 响应的主要内容,如果未能解决你的问题,请参考以下文章
在 Sencha Touch 2 中更改选项卡时发出 Ajax 请求
如何通过 ajax 在 javascript 中使用个人 http 标头加载图像(sencha touch 2)