使用ajax调用自动保存表单数据
Autosaving form data using ajax calls
我正在尝试使用ajax调用在服务器端自动保存表单数据。我在任何输入更改后20秒开始自动保存。如果有一个自动保存调用正在进行,我想等待。以下是我正在采取的步骤。我的方法依赖于javascript全局变量,我担心可能会遇到某种同步问题。还有其他更好的方法吗?
$('input').change(function() {
if (autoSaveInProgress == false) {
//call ajax function in 20secodns.
setTimeout(autoSaveFunction, 20000);
autoSaveInProgress = true;
}
});
收到服务器的响应后,我在autoSaveFunction中将autoSaveInProgress设置为false。
我建议使用(jQ)xhr对象属性:
var saveXhr;
function autoSave(){
if(saveXhr && saveXhr.readyState < 4){
//previous save not completed
//do something, perhaps saveXhr.abort() or prolong the timer
}else{
saveXhr = $.ajax({ /* your save ajax code */ });
}
}
为了避免使用全局范围的变量,可以在发生更改事件的元素上设置属性。我喜欢使用disabled属性。
var disabled = $that.attr('disabled');
if (disabled) {
return false;
}
$(this).attr('disabled', 'disabled');
并重新启用该元素,但您必须将该元素传递到异步闭包中(参见fiddle):
$that.removeAttr('disabled');
http://jsfiddle.net/EHFZL/
您还可以使更改选择器更加具体:http://jsfiddle.net/eHQbh/
相关文章:
- 如何停止javascript的执行并允许用户保存表单
- javascript html使用webstorage保存表单
- 在浏览器会话中保存表单数据
- 空闲时自动保存表单
- 是否可以在没有用户提交表单的情况下保存表单数据
- 如何在单击“另存为草稿”按钮时使用 JavaScript 保存表单内容
- PHP 页面未保存表单和解析输出
- 使用 jquery 记住保存表单时打开的选项卡
- 使用ajax调用自动保存表单数据
- 如何在浏览器中保存表单输入
- 保存表单输入数据以在其他页面上使用
- Don't保存表单
- 如何在模态窗口中保存表单值
- 仅在提交时使用 javascript 保存表单状态
- 我如何保存表单数据与jquery和php sql
- 单击按钮保存表单中的数据
- 如何使用 HTML5 本地存储保存表单中的数据
- 如果用户没有保存表单,如何测试用户是否对表单进行了任何更改
- 如何保存表单中的信息?
- 通过ajax保存表单数据,不需要服务器代码