Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.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和ajax自动保存表单字段输入_Javascript_Jquery_Ajax_Jquery Plugins - Fatal编程技术网

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

Javascript 使用jquery和ajax自动保存表单字段输入,javascript,jquery,ajax,jquery-plugins,Javascript,Jquery,Ajax,Jquery Plugins,我有一个带有不同输入字段的表单。因此,在很短的时间内,用户输入的数据需要自动存储在数据库中。提交请求后,它将被定向到struts文件,在该文件中执行数据库交互 在我尝试过的情况下,我已经将超时函数设置为在每次加载页面时运行 var timer; $(document).ready(function() { timer = setTimeout("autosave()", 60000); }); 在autosave函数中,我试图将输入数据发布到指定的URL jQuery('form').eac

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

在我尝试过的情况下,我已经将超时函数设置为在每次加载页面时运行

var timer;
$(document).ready(function() {
timer = setTimeout("autosave()", 60000); 
});
在autosave函数中,我试图将输入数据发布到指定的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,它将根据requesttype进行处理并提交数据

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

请分享你对我做错了什么以及其他方法的建议

谢谢你宝贵的建议和时间

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

JSFIDLE:

我建议您使用插件

在autosave函数中,只需启动$('form').submit()

这是一个快速而好的方法,我已经根据你的要求做了一个选择

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);
});
您需要关注两种方法
setTimeout
setInterval
。setTimeout将在DOM加载1秒后调用
autosave()
,但只调用一次
setInterval
每隔1秒重复调用
autosave()
。你可以看

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


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

数据是否保存在您的数据库中?
requestType=“auto”
编写此文件时不使用双引号。
setTimeout
不会每分钟调用一次。类似的操作应按要求执行。6秒而不是60秒用于测试。@GuruprasadRao修改了它。ThanksSo,没有指出
setTimeout
只运行一次,而且
setInterval
更适合于此,你只是建议使用插件提交表单?@Moayad AL-Najdawi,谢谢你的回复。但是我计划在没有插件的情况下完成这项工作。我假设你会在插件中再次调用autosave函数,然后你会每6个月启动一次autosaveSecond@jegadees哦,对不起,我在你的标签中看到了jquery插件,所以我放了一个插件来帮助你。这种方法只适用于没有那么多ajax调用的场景在短时间内开火。例如,当并行运行自动UI测试时,这将不起作用。。使用
debounce
也比使用
setTimeout
更好。