0

在我的 sencha touch 2.1 中,成功登录后,服务会发回一个令牌,该令牌必须存储并用于所有未来的服务调用。由于我正在处理远程 Web 服务,因此所有商店都使用 JsonP 代理来获取数据,这就是我想将令牌添加到所有此类调用的原因。由于 JsonP 不支持标头,因此我计划将此令牌添加为 url 参数,但我不确定如何为来自 app.js 的所有 JsonP 调用执行此操作。

在每个 AJAX 请求(Sencha Touch 2)中发现了 AJAX 调用的类似问题
Send user details (session token)

但由于 JsonP 不支持 'beforerequest' 事件和标题,我被卡住了。

是否有任何其他事件我可以监听/拦截来添加这个 url 参数?有没有办法编写具有此功能的基代理类?如果您知道如何执行此操作,请分享一些示例。

4

1 回答 1

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;
  }
});

如果您知道其他更好的方法,请分享。

于 2013-01-15T12:22:27.553 回答