【发布时间】:2019-02-12 03:14:02
【问题描述】:
// 编辑
感谢到目前为止的所有帮助。恐怕我做错了,所以我重新构建了整个代码,也重新构建了 localStorage 数组的“结构”
这是我的完整代码及其背后的意图。我想检查连接(我使用 pingjs.js),如果没有连接,用户输入将存储在 localStorage 中。如果我们收到 ping 回复,我们会通过 jQuery AJAX 上传 localStorage 中的所有内容,并从 localStorage 数组中删除提交的数据(例如,不是之后的所有内容)。还有一点,我想避免重复(更新已经存在的数据基于 stnr 和 pstn)并获得类似 用于索引 localStorage 数组的唯一 id 之类的东西。
到目前为止,这是我的代码,除了 indizes 和已经存在的 stnr 和 pstn 的更新:
<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/pingjs.js"></script>
<script>
$(document).ready(function() {
$('#store').click(function() {
var startnummer = $("#startnummer").val();
var ergebnis = $("#ergebnis").val();
var position = $("#position").val();
var data = [
{
"stnr": startnummer,
"rslt": ergebnis,
"pstn": position
}
]
/*
So far I use localStorage.length for indexing, but
I want something for checking of duplicates and update
them if necessary, based on stnr AND pstn, so if these
are same, only update rslt
*/
localStorage.setItem((localStorage.length), JSON.stringify(data));
});
// We got a ping
ping('https://example.com/').then(function(delta) {
if(window.localStorage !== undefined) {
var fields = $(this).serialize();
$.ajax({
type: 'POST',
url: 'xyz.php',
data: fields,
success: function(html){
// Here I want to delete all the passed data
localStorage.removeItem( ??? );
// Output status
$('#status').fadeIn(500).delay(5000).fadeOut(500).html(html);
}
});
} else {
alert("Storage Failed. Try refreshing");
}
// We have no ping
}).catch(function(err) {
alert('Could not ping remote URL', err);
});
});
</script>
存储工作没有问题。所以这里没问题。
【问题讨论】:
-
嗯,removeItem 按键删除了本地存储,不确定这些行如何应用于它。这些东西是如何添加到本地存储中的?
-
我已经更新了问题。请看一看。
-
setItem()更新密钥(如果已存在)
标签: javascript jquery ajax local-storage