5

我有一个关于从一个 JQM / Phonegap 应用程序的页面之间传递数据的问题。

如果我有一个 JS 对象,其中包含一些数据,例如:搜索词、位置和其他一些过滤器值,例如,用户从搜索页​​面跳转到设置页面并再次返回到搜索页面......怎么能我保存了信息,我在预览页面中有什么?是否有类似 cookie 的东西,或者我是否应该使用 sqlite 来保存信息并在每次用户进入搜索页面时阅读它?

4

3 回答 3

15

我会使用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')
于 2013-02-01T13:50:04.973 回答
3

我使用了这种标签方法(现在是 2014 年),因为我只有 1 或 2 项要通过。你可以通过#标签传递它,然后用JS将结果拆分成数组......例如:

来自 URL:index.html#var1?var2

已解决页面:

var str = str.window.location.hash.substr(1);
var res = str.split("?");
alert(res[0]+","+res[1]);

希望对某人有所帮助。LocalStorage 和其他选项对于这种类型的提升 IMO 来说太重了。

于 2014-06-24T21:49:58.510 回答
1

我认为一种可能的方法是使用查询字符串在页面之间来回发送数据,您可以将它们附加到页面 url。像newpage.html?val=12,如果你需要传递的数据量不多,这个方法更好,比sqlite轻得多。您还可以使用 localstorage,它是键值对(与关系型 sqlite 不同)。它比 sqlite 更容易实现(虽然它不是持久的)。

此外,如果您真的需要多个 html 页面,您可能需要重新考虑,jquery mobile 和 sencha touch 等框架可以很好地使用一个带有多个 div 的 html 页面作为您的应用程序的屏幕。所以你也可以试一试。

于 2013-02-01T13:37:49.870 回答