我的脑袋即将爆炸。我不能按照我想要的方式工作,而且我似乎无法找出它的错误。
我有一个表格需要用AJAX处理。
但在我这样做之前,我想将其保存在window.sessionStorage
。
该功能必须跨设备工作,并且我遇到了iOS问题。
关于stackoverflow和google有很多关于此问题的问题,有各种修复方法。但它们似乎都不适合我。
我有这样的表格:
<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;
我
已经从localStorage
转到sessionStorage
,希望可以解决问题,但没有
我已经尝试过&#34;对&#34;使用此sessionStorage.setItem('last', 'search')
设置变量的方法
但没有帮助。
无论我做什么,表格仍在提交。
如果我return false;
在sessionStorage
之前它正常工作,并停止表单。
它适用于台式机和Android,但它在iOS设备上失败
调试我已尝试过:
console.log(sessionStorage.last) returns null
console.log(typeof sessionStorage) returns object
console.log(sessionStorage.last = 'foo') returns foo
如果您需要更多代码/需要我尝试任何事情,请告诉我!
答案 0 :(得分:1)
根据Apple的文档,它应该有效: 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);
}