Javascript 本地存储导致无限刷新页面?
我正在为一个简单的表单进行本地存储。当用户打开表单时,所有保存的数据将显示在相应的输入字段中,用户填写表单后,所有信息将被保存 现在我可以保存数据并显示数据,只是当我重新打开页面时,数据会在页面无限刷新时显示。有人知道这是怎么发生的吗 代码如下: HTML: Jquery:Javascript 本地存储导致无限刷新页面?,javascript,jquery,Javascript,Jquery,我正在为一个简单的表单进行本地存储。当用户打开表单时,所有保存的数据将显示在相应的输入字段中,用户填写表单后,所有信息将被保存 现在我可以保存数据并显示数据,只是当我重新打开页面时,数据会在页面无限刷新时显示。有人知道这是怎么发生的吗 代码如下: HTML: Jquery: if(Modernizr.localstorage){ var form=document.querySelector('#formData'); if(localStorage.formData){
if(Modernizr.localstorage){
var form=document.querySelector('#formData');
if(localStorage.formData){
//step one:
//display the stored value, title=my+title&...&
var fd;
fd=localStorage.formData.split('&'); //['title=my+title']
$.each(fd,function(index,pair){
pair=pair.split('=');//title,my+title
console.log(pair[0]+":"+pair[1]);
if(pair[1]==="on"){
form[pair[0]].checked=true;
}else{
form[pair[0]].value=unescape(pair[1]).replace(/\+/g," ");
}
});
}
//step two:
//save form to storage when filled outline
form.submit(function(e){
//serialize form data to url
localStorage.formData=$(this).serialize();
alert('Okay, refresh the page now.');
e.preventDefault();
});
}
无限重载是由
form.submit()
引起的。这将触发HTML提交操作。其中一部分是重新加载页面
我怀疑您真正想要的是侦听submit事件并执行本地存储保存:
document.querySelector("#formData").addEventListener("submit", function(e){
localStorage.formData=$(this).serialize();
alert('Okay, refresh the page now.');
e.preventDefault();
});
无限重载是由
form.submit()
引起的。这将触发HTML提交操作。其中一部分是重新加载页面
我怀疑您真正想要的是侦听submit事件并执行本地存储保存:
document.querySelector("#formData").addEventListener("submit", function(e){
localStorage.formData=$(this).serialize();
alert('Okay, refresh the page now.');
e.preventDefault();
});
表单是否有结束标记?这不是使用localstorage的方式@Occam'sRazor FYI
localStorage.foo=“bar”
是localStorage.setItem(“foo”、“bar”)
的缩写。除了localStorage
的奇怪用法之外,form.submit
不接受任何参数,因此表单被提交,页面作为服务器响应被重新加载。请参见MDN。@Occam'sRazor除了Roko的回复之外,浏览器将自动呈现丢失的关闭表单标记,即使我没有添加它。您的表单是否有关闭
标记?这不是您使用localstorage的方式@Occam'sRazor FYIlocalStorage.foo=“bar”
是localStorage.setItem(“foo”、“bar”)
的缩写。除了localStorage
的奇怪用法之外,form.submit
不接受任何参数,因此表单被提交,页面作为服务器响应被重新加载。请参阅MDN。@Occam'sRazor除了Roko回复的内容外,浏览器将自动呈现丢失的关闭表单标记,即使我没有添加它。我将表单更改为$(表单),然后问题得到解决。。。也许你无论如何都是对的,因为你现在正在使用。有点令人困惑的是,如果给定参数,它的行为就像事件侦听器,但是如果没有给定参数,它的行为就像submit()
。我将表单更改为$(表单),那么问题就解决了。。。也许你无论如何都是对的,因为你现在正在使用。有点令人困惑的是,如果给定参数,它的行为类似于事件侦听器,但如果没有给定参数,它的行为类似于submit()
。
document.querySelector("#formData").addEventListener("submit", function(e){
localStorage.formData=$(this).serialize();
alert('Okay, refresh the page now.');
e.preventDefault();
});