在我的sencha touch 2.1中,成功登录后,将从服务中发回令牌,该令牌必须存储并与将来的所有服务呼叫一起使用。由于我正在处理远程Web服务,因此所有商店都使用JsonP代理来获取数据,这就是我想将令牌添加到所有此类调用的原因。由于JsonP不支持头文件,我打算将此令牌添加为url param,但我不知道如何对源自app的所有JsonP调用执行此操作。
发现了类似的AJAX调用问题 Send user details (session token) within every AJAX requests (Sencha Touch 2)
但由于JsonP不支持'beforerequest'事件和标题,我被卡住了。
是否还有其他可以收听/拦截的事件来添加此网址参数?有没有办法编写具有此功能的基本代理类?如果您知道如何操作,请分享一些示例。
答案 0 :(得分:0)
好的,我发现了一种对我有用的方式。
我扩展了JsonP代理,并在buildUrl方法中添加了缓存的令牌,现在我在所有商店中都使用了这个代理。这是代码:
Ext.define('myshop.proxy.CustomJsonpProxy', {
extend: 'Ext.data.proxy.JsonP',
alias: 'proxy.customjsonpproxy',
buildUrl: function(request) {
var me = this,
url = me.callParent(arguments);
if(!Ext.isEmpty(loggedInUserToken)){
url = Ext.urlAppend(url, "token="+loggedInUserToken);
}
return url;
}
});
如果您了解其他更好的方法,请分享。