Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 会话存储问题,jQuery_Javascript_Jquery_Sessionstorage - Fatal编程技术网

Javascript 会话存储问题,jQuery

Javascript 会话存储问题,jQuery,javascript,jquery,sessionstorage,Javascript,Jquery,Sessionstorage,在尝试通过会话存储存储数据时遇到困难,请提供帮助 我有一个简单的表单,希望从表单输入中读取数据并将其附加到表中,并在会话期间将该数据存储在表中 HTML 名称: 电邮: 电话: 街道: 城市: 声明: 邮编: 添加客户 JS $(文档).ready(函数(){ 如果(会话存储长度>0){ 显示() } }) $(#myForm”)。在(“单击”,函数()上{ 保存() $(“:input”).val(“”;//清除表单的字段 }); 函数save(){ var name=$(“#name”).

在尝试通过会话存储存储数据时遇到困难,请提供帮助

我有一个简单的表单,希望从表单输入中读取数据并将其附加到表中,并在会话期间将该数据存储在表中

HTML

名称:
电邮:
电话:
街道:
城市:
声明:
邮编:
添加客户
JS

$(文档).ready(函数(){
如果(会话存储长度>0){
显示()
}
})
$(#myForm”)。在(“单击”,函数()上{
保存()
$(“:input”).val(“”;//清除表单的字段
});
函数save(){
var name=$(“#name”).val();
var email=$(“#email”).val();
var电话=$(“#电话”).val();
var street=$(“#street”).val();
var city=$(“#city”).val();
var state=$(“#state”).val();
var zip=$(“#zip”).val();
var inputArray=[姓名、电子邮件、电话、街道、城市、州、邮政编码];
对于(输入阵列中的i){//存储输入数据
setItem(i,inputArray[i])
};
显示()
}
函数显示(){
var restoredName=sessionStorage.getItem(0);
var restoredEmail=sessionStorage.getItem(1);
var restoredTel=sessionStorage.getItem(2);
var restoredStreet=sessionStorage.getItem(3);
var restoredCity=sessionStorage.getItem(4);
var restoredState=sessionStorage.getItem(5);
var restoredZip=sessionStorage.getItem(6);
//将表格中填写的信息附加到表格和2个按钮-更新和删除
$(“#列表内容表”).append(“+
“”+restoredName+“”+
“”+恢复邮件+“”+
“”+restoredTel+“”+
“+restoredStreet+”
“+restoredCity+”+
“”+restoredState+“”+
“”+restoredZip+“”+
“+”更新“+”+
“+”删除“+”+
"");
}
问题在于,表中只存储并显示最后一次提交,而不是会话期间执行的所有提交

我猜每次用户用新的输入值单击submit时,sessionStorage都会被重写。我不知道如何在每次提交时增加存储空间。
请告知,如何解决此问题?感谢您提供的代码,只需将输入数组写入会话存储即可。 如果要在会话存储中存储多个InputArray,最好的方法是生成一个标识符,并序列化输入数组以存储它

为数组生成标识符的方式由您决定。要序列化它,可以使用

var dataToStore = JSON.stringify(inputArray);
那你就用

sessionStorage.setItem(myGeneratedId, dataToStore);
最后,要读取您的数据:

var myArraySerialized = sessionStorage.getItem(myGeneratedId);
var myArray = JSON.parse( myArraySerialized );

因为JSON解析可能会失败,所以最好尝试…捕获它。

问题是:为什么要使用索引?sessionStorage是一个键值对象,使用它的最佳方法是设置适当的键,以便以后访问

sessionStorage.setValue('Key', 'Value');
如果要保存阵列中的所有内容,则需要对其进行字符串化:

sessionStorage.setValue('KeyName' JSON.stringify(Data));
当您得到它时,请使用JSON.parse()


sessionStorage.setItem(i,inputArray[i])
将使用给定的值设置键
i
,以前的值将被覆盖,您可能需要先获取prev值,然后向其追加新值,并将连接的值设置为
sessionStorage
。嗨,我对web开发非常陌生,这是我的第一次“约会”关于存储数据:)您能分享一下吗?您所说的生成标识符是什么意思?它类似于var mygenerateId=0;myGeneratedId++?抱歉,如果这是个愚蠢的问题
sessionStorage.setValue('Key', 'Value');
sessionStorage.setValue('KeyName' JSON.stringify(Data));
var dataArray=JSON.parse(SessionStorage.getItem('KeyName'));