我有一个关于在一个JQM / Phonegap App的页面之间传递数据的问题。
如果我有一个JS对象,其中包含一些数据:搜索词,位置和其他一些过滤值,例如用户从搜索页面跳到设置页面,然后再返回到搜索页面。我如何保存信息,我在预览页面中有什么?是否有类似cookie的东西,或者我是否应该使用sqlite来保存信息并在每次用户进入搜索页面时读取它?
答案 0 :(得分:12)
我会使用LocalStorage,使用起来非常简单。它允许您存储纯文本:
// Writing 'something' in localStorage.myvariable
localStorage.myvariable = 'something'
// Displaying the previous variable
console.log(localStorage.myvariable)
如果纯文本不够并且您需要存储数据结构,则可以实现以下内容:
Storage.prototype.setObject = function(key, value) { this.setItem(key, JSON.stringify(value)); }
Storage.prototype.getObject = function(key) { var value = this.getItem(key);return value && JSON.parse(value); }
// Storing a JSON object
localStorage.setObject('myObject', {key1: 'value', key2: 'value2'});
// Accessing the object
localStorage.getObject('myObject')
答案 1 :(得分:3)
我使用了这种#标签方法(现在是2014年),因为我只有1或2个项目可以通过。你可以通过#tag传递它,然后用JS将结果拆分成数组......例如:
来自网址:index.html#var1?var2
已解决的页面:
var str = str.window.location.hash.substr(1);
var res = str.split("?");
alert(res[0]+","+res[1]);
希望有人帮助。 LocalStorage和其他选项对于这种类型的提升IMO来说太重了。
答案 2 :(得分:1)
我认为一种可能的方法是使用查询字符串在页面之间来回发送数据,您可以将它们附加到页面网址。像newpage.html?val = 12,如果您需要传递的数据量不多,这个appraoch更好,并且比sqlite轻得多。你也可以使用localstorage,它是键值对(不同于sqlite是关系的)。它比sqlite更容易实现(虽然它不是持久的)。
如果你真的需要多个html页面,你可能想要重新思考,像jquery mobile和sencha touch这样的框架可以很好地与一个html页面配合使用多个div作为应用程序的screeens。所以你也可以尝试一下。