Javascript 使用jquery和ajax自动保存表单字段输入
我有一个带有不同输入字段的表单。因此,在很短的时间内,用户输入的数据需要自动存储在数据库中。提交请求后,它将被定向到struts文件,在该文件中执行数据库交互 在我尝试过的情况下,我已经将超时函数设置为在每次加载页面时运行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
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
更好。