2014-11-16 89 views
0

我的頭即將爆炸。我無法按照我想要的方式工作,我似乎無法找出問題所在。iOS sessionStorage and form submits

我有一個表格,我需要使用AJAX進行處理。
但之前我這樣做,我想保存在window.sessionStorage

功能必須跨設備工作,並且我在iOS上遇到問題。

有很多關於這個問題的stackoverflow和谷歌問題,各種修復。但他們沒有一個人似乎爲我工作。

我有這樣的形式:

<form role="form" id="searchForm" data-method="search" action="" onsubmit="return doStuff('search')" data-ajax="false"> 
    <div class="form-group"> 
     <input type="search" id="search" name="s" class="form-control" placeholder="Search..."> 
     <span class="help-block"><small>Search by partnumber, suppler or free text</small></span> 
    </div> 
    <button type="submit" data-ajax="false" class="btn btn-block btn-warning">Search</button> 
</form> 

現在,提交表單時,它通過在大約200線功能運行時,我已經將範圍縮小到代碼中斷。
就在這裏:

sessionStorage.last = search; 
return false; 

我 「已經從localStoragesessionStorage的希望,可能會解決這個問題,它沒有

我已經試過了‘正確’的方式來設置與此變量sessionStorage.setItem('last', 'search')
但沒有幫助。

無論我做什麼,表單仍在提交。 如果我之前sessionStorage它工作正常,並停止窗體。

它適用於臺式機和Android精品,但它在iOS設備上misserably失敗

調試我已經試過:

console.log(sessionStorage.last) returns null 
console.log(typeof sessionStorage) returns object 
console.log(sessionStorage.last = 'foo') returns foo 

如果你需要更多的代碼/需要我去嘗試任何事情,請告訴我!

回答

1

根據蘋果的文檔,它應該工作: https://developer.apple.com/library/safari/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Name-ValueStorage/Name-ValueStorage.html

我使用localStorage的沒有任何問題,但不是sessionStorage的(雖然文檔說應該是互換)。您可以嘗試一個try-catch塊,以便代碼不會崩潰,並且您可以獲得一些線索。 Apple提到它可能會拋出QUOTA_EXCEEDED_ERR異常。

try { 
    sessionStorage.setItem("last", search); 
} catch (e) { 
    alert("error: " + e); 
} 
+0

我已經標記你的答案是正確的。 我發現我的老闆(測試網站的那個人)「不小心」穿上了隱私瀏覽功能,這會阻止localstorage和sessionstorage保存任何內容。 – Caweren

+0

大聲笑很好!很高興它解決了。 –