问题
I have a form with different input fields.So for very minute , the data entered by the user needs to be automatically stored in the database. Once the request is submitted , it will be directed to the struts file where the database interactions will be carried out .
What i have tried, I had set the timeout function to run every time the page is loaded
var timer;
$(document).ready(function() {
timer = setTimeout("autosave()", 60000);
});
And in the autosave function , i am trying to post the input data to the designated 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{
}
}
});
});
}
}
And once the request is sent to the struts , it will be processed based on the requesttype and the data will be submitted.
But in my case , data doesn't get saved.
Kindly share your suggestions on what i am doing wrong and any other ways to do it ?
Thanks for your valuable suggestion and time..
FYI , i am a beginner in Jquery and ajax technologies
JSFIDDLE : jsfiddle
回答1:
I have made a fiddle according to your requirement.
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);
});
You need to focus on two methods setTimeout and setInterval. setTimeout will call autosave() after 1 second of DOM loading but only once. setInterval will call autosave() after every 1 second repeatedly. You can read it here.
The
setTimeout()method calls a function or evaluates an expression after a specified number of milliseconds. Tip: The function is only executed once. If you need to repeat execution, use thesetInterval()method.
For more details on your ajax request you need to look at the console(F12) errors.
回答2:
I recommend that you use ajaxForm plugin
and in the autosave function just fire $('form').submit();
this is the fast and good way
来源:https://stackoverflow.com/questions/29621214/auto-save-form-field-inputs-using-jquery-and-ajax