Javascript 本地存储导致无限刷新页面?

Javascript 本地存储导致无限刷新页面?,javascript,jquery,Javascript,Jquery,我正在为一个简单的表单进行本地存储。当用户打开表单时,所有保存的数据将显示在相应的输入字段中,用户填写表单后,所有信息将被保存 现在我可以保存数据并显示数据,只是当我重新打开页面时,数据会在页面无限刷新时显示。有人知道这是怎么发生的吗 代码如下: HTML: Jquery: if(Modernizr.localstorage){ var form=document.querySelector('#formData'); if(localStorage.formData){

我正在为一个简单的表单进行本地存储。当用户打开表单时,所有保存的数据将显示在相应的输入字段中,用户填写表单后,所有信息将被保存

现在我可以保存数据并显示数据,只是当我重新打开页面时,数据会在页面无限刷新时显示。有人知道这是怎么发生的吗

代码如下:

HTML:

Jquery:

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 FYI
localStorage.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();
});