使用jquery和ajax自动保存表单字段输入

时间:2015-04-14 07:09:15

标签: javascript jquery ajax jquery-plugins

我有一个包含不同输入字段的表单。因此,用户输入的数据需要自动存储在数据库中。提交请求后,它将被定向到将执行数据库交互的struts文件。

我试过的,我已经设置了每次加载页面时运行的超时功能

var timer;
$(document).ready(function() {
timer = setTimeout("autosave()", 60000); 
});

在自动保存功能中,我试图将输入数据发布到指定的URL

jQuery('form').each(function() {
        jQuery.ajax({
            url: "http://localhost:7002/submitStudent.do?requestType=auto&autosave=true",
            data: jQuery(this).serialize(),
            type: 'POST',
            success: function(data){
                if(data && data == 'success') {
                    alert("data saved");
                }else{
                }
            }
        }); 
    }); 
}
 }

一旦请求发送到struts,它将根据请求类型进行处理,数据将被提交。

但就我而言,数据无法保存。

请分享您对我做错了什么以及其他任何方法的建议吗?

感谢您宝贵的建议和时间..

仅供参考,我是Jquery和ajax技术的初学者

JSFIDDLE:jsfiddle

2 个答案:

答案 0 :(得分:3)

我已根据您的要求制作了fiddle

var timer;

var fun = function autosave() {
    alert();
    jQuery('form').each(function () {
        jQuery.ajax({
            url: "http://localhost:7002/submitStudent.do?autosave=true",
            data: jQuery(this).serialize(),
            type: 'POST',
            success: function (data) {
                if (data && data == 'success') {
                    alert("data saved");
                } else {}
            }
        });
    });
}
$(document).ready(function () {
    setTimeout(fun, 1000);
    //setInterval(fun,1000);
});

您需要关注两种方法setTimeoutsetInterval。 setTimeout将在1秒的DOM加载后调用autosave(),但只会调用一次。 setInterval会在每1秒钟后反复拨打autosave()。你可以阅读它here

  

setTimeout()方法调用函数或计算表达式   在指定的毫秒数之后。 提示:该功能仅执行一次。如果您需要重复执行,请使用setInterval()方法。

有关ajax请求的更多详细信息,您需要查看控制台(F12)错误。

答案 1 :(得分:0)

我建议您使用ajaxForm插件

并在自动保存功能中只需触发$('form')。submit();

这是快速而好的方式