我正在使用特定于用户的数据集构建 Sencha Touch 2 应用程序。
应用架构:
Sencha Touch App <=====> 带有 REST 服务的 Java 服务器后端(许多 AJAX 请求 =))
我实际上拥有的是:
- 使用用户名/密码登录用户
应用程序被初始化,登录表单开始发挥作用。将表单作为 AJAX 请求提交后,服务器后端检查用户数据并调用客户端回调函数。
我想做的是:
- 回调函数应该
- 使用 sessiontoken 创建一个 cookie或
- 将 sessiontoken 存储在本地存储(http://docs.sencha.com/touch/2-0/#!/api/Ext.data.proxy.LocalStorage)或
- 将 sessiontoken 存储在 js 变量中
好的,应该问题不大。
但我怎样才能实现以下目标:
大多数数据是特定于一个用户的,如果需要,应该由 REST 服务返回(通过单击导航,...)。我如何在每个 AJAX 请求中发送 sessiontoken(见上文) - 以便服务器可以提供合适的数据集(假设令牌有效)?
在 AJAX 请求中发送 cookie
我已经读过如果 url 在同一个空间上,cookie 会自动添加到请求中,对吗?Java 服务器位于同一个域 (localhost:8080) 但 cookie 不可用 - 而不是像“app.json”这样的 url 上的请求。我认为跨域请求真的是特定于域的吗?
在 AJAX 请求中发送参数
因为 cookie 不是 avi,所以我考虑了“手动”向 ajax 请求添加参数的可能性。该应用程序将包含许多 AJAX 请求,这就是我不想手动添加令牌的原因 - 我试图覆盖Ext.Ajax的请求功能但我失败了;-(:
(function() {
var originalRequest = Ext.data.Connection.prototype.request;
Ext.override(Ext.data.Connection, {
request : function(options) {
alert("Do sth... like add params");
return originalRequest.apply(this, options);
}
});
})();
错误:
未捕获的错误:[ERROR][Ext.data.Connection#request] 未指定 URL
我也尝试添加一个监听器
Ext.Ajax.add({
listeners : {
beforerequest : function( conn, options, eOpts ){
alert("Do sth... like add params");
}
}
});
错误:
未捕获的类型错误:对象 [对象对象] 没有方法“添加”
关于如何添加令牌的任何想法?
或者有什么更好的方法来处理这些案件?
谢谢!