Auto save form field inputs using jquery and ajax

回眸只為那壹抹淺笑 提交于 2021-02-08 08:18:15

问题


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 the setInterval() 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!