Javascript 本地存储仅在刷新后可访问
我正在使用Sencha Touch 2.0.0.RC开发一个移动web应用程序,但我认为我的问题与此框架无关 以下是工作流程: 启动时,加载app.js,并检查本地存储中是否存在令牌:Javascript 本地存储仅在刷新后可访问,javascript,html,local-storage,sencha-touch-2,web-storage,Javascript,Html,Local Storage,Sencha Touch 2,Web Storage,我正在使用Sencha Touch 2.0.0.RC开发一个移动web应用程序,但我认为我的问题与此框架无关 以下是工作流程: 启动时,加载app.js,并检查本地存储中是否存在令牌: launch:function(){ if(localStorage.getItem('myToken')){ Ext.create('MyApp.view.Viewport'); } 否则{ Ext.create('MyApp.view.Login'); } } 因为我是第一次加载应用程序,所以找不到令牌,所
launch:function(){
if(localStorage.getItem('myToken')){
Ext.create('MyApp.view.Viewport');
}
否则{
Ext.create('MyApp.view.Login');
}
}
因为我是第一次加载应用程序,所以找不到令牌,所以创建了登录视图
在login.js控制器中,submitLoginForm函数获取表单值并向rest API发送ajax请求:
submitLoginForm:function(){
var formValues=this.getLoginForm().getValues();
Ext.Ajax.request({
范围:本,,
网址:'http://mydomain.com/api/login/token',
方法:“POST”,
参数:formValues,
成功:功能(响应){
var result=Ext.JSON.decode(response.responseText);
如果(结果、成功){
setItem('myToken',result.token);
var viewport=Ext.create('MyApp.view.viewport');
this.getLoginForm().setHidden(true);
viewport.show();
}
否则{
Ext.Msg.alert('Error','Bad username或password');
}
},
失败:函数(){
//
}
});
}
当用户名和密码正确时,将返回一个令牌,我将其存储在localStorage中。
之后,我创建并显示另一个视图(viewport.js),该视图使用令牌访问API:
存储:{
//...
代理:{
//...
网址:'http://mydomain.com/api/controller/function/?token='+localStorage.getItem('myToken')
}
}
此时url如下所示:
http://mydomain.com/api/controller/function/?token=null&...
但当我刷新浏览器时,一切正常,令牌又回来了:
http://mydomain.com/api/controller/function/?token=tokenValue&...
我还可以完全关闭浏览器,再次打开它,然后访问整个应用程序,而无需登录。您不能只使用内置的localstorage代理吗 看 然后只需按如下方式设置代理:
proxy: {
id: 'myproxy',
type: 'localstorage'
}
然后查询您的存储中的数据。您不能只使用内置的localstorage代理吗 看 然后只需按如下方式设置代理:
proxy: {
id: 'myproxy',
type: 'localstorage'
}
然后查询您的商店以获取数据。问题与我对Sencha Touch的误解有关。我在配置中创建了一个存储,它在我描述之前就被调用了。Mitchellismoens确实是个合适的人,他回答得很快,他自己也明白我是在以我的观点创建我的商店 这个问题与我对Sencha Touch的误解有关。我在配置中创建了一个存储,它在我描述之前就被调用了。Mitchellismoens确实是个合适的人,他回答得很快,他自己也明白我是在以我的观点创建我的商店 虽然S.O.不错,但也可以尝试在上发帖。有一个叫Mitchellismoens的家伙,他认识很多sencha(他是主持人),通常回答得很快。是的,我认识那个家伙,他很活跃。我现在把我的问题贴在了那个论坛上。我想我会在这里有更好的运气,因为(在我看来)这与Sencha Touch无关。虽然S.O.很好,也可以尝试在上发帖。有一个叫Mitchellismoens的家伙,他认识很多sencha(他是主持人),通常回答得很快。是的,我认识那个家伙,他很活跃。我现在把我的问题贴在了那个论坛上。我想我在这里会有更好的运气,因为(在我看来)这与Sencha Touch无关。为什么我应该使用这个代理,它意味着几行代码和一个额外的文件,当一行执行任务时,该文件的模型定义具有唯一字段?为什么我应该使用这个代理,它意味着几行代码和一个额外的文件,该文件的模型定义在执行任务时具有唯一字段单行线能完成任务吗?