我對從一個JQM/Phonegap應用程序頁面之間傳遞數據有疑問。Phonegap - 在頁面之間傳遞JS數據
如果我有一個JS對象,其中包含以下一些數據:搜索項,位置和一些其他過濾器值,例如用戶正在從搜索頁面跳轉到設置頁面,並再次返回到搜索頁面。 ..我怎樣才能保存信息,我在預覽頁面中有什麼?有沒有類似cookie的內容,或者我是否曾經使用過sqlite來保存信息並在用戶每次進入搜索頁面時閱讀它?
我對從一個JQM/Phonegap應用程序頁面之間傳遞數據有疑問。Phonegap - 在頁面之間傳遞JS數據
如果我有一個JS對象,其中包含以下一些數據:搜索項,位置和一些其他過濾器值,例如用戶正在從搜索頁面跳轉到設置頁面,並再次返回到搜索頁面。 ..我怎樣才能保存信息,我在預覽頁面中有什麼?有沒有類似cookie的內容,或者我是否曾經使用過sqlite來保存信息並在用戶每次進入搜索頁面時閱讀它?
我會用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')
我認爲一種可能的方法是使用querystrings在頁面之間來回發送數據,你可以將它們附加到頁面url。比如newpage.html?val = 12,如果你需要傳遞的數據量不多,這個方法會更好,並且與sqlite相比輕量級。你也可以使用localstorage,它是關鍵值對(與關係型sqlite不同)。它比sqlite實現起來要容易得多(雖然它不是持久的)。
此外,如果您真的需要多個html頁面,像jquery mobile和sencha touch這樣的框架可以很好地處理一個帶有多個div的html頁面作爲應用程序的屏幕,您可能需要重新考慮。所以你可以嘗試一下。
我已經使用了這種方法,因爲我只有1或2個項目可以通過。你可以通過#標籤傳遞它,然後用JS分割結果到數組中... – jasonflaherty
我用這個方法包括hashtag( 2014現在),因爲我只有1或2件物品可以通過。您可以通過#標籤通過它,然後用JS的結果分成和數組...例如:
從網址:index.html的#VAR1 VAR2
解決頁:
var str = str.window.location.hash.substr(1);
var res = str.split("?");
alert(res[0]+","+res[1]);
希望能幫助別人。 LocalStorage和其他選項對於這種IMO提升來說太重了。
localStorage是否適用於iOS和Android?我已經閱讀過某個地方,Android有一些問題? –
您可以同時使用它,它是一個與所有iOS和Android版本兼容的HTML5功能(http://caniuse.com/namevalue-storage) – davids
localStorage的不足之處在於它用於存儲字符串,而不是對象。所以你需要存儲一個序列化的對象(YMMV)或單獨存儲對象的屬性。 – YiddishNinja