使用JQuery AJAX的AutoSave架构

时间:2013-06-30 16:12:18

标签: javascript jquery ajax codeigniter autosave

我想为我的网站实现AutoSave功能 我的意思是,我希望用户在整个网站上编辑的所有字段都应该自动保存而无需任何按钮点击。因此用户可以继续编辑。

  

[网站设计:CodeIgniter和JQuery]。

此功能,我的实现如下。

1.在javascript中处理了一个Queue数据结构,我正在推动用户所做的所有更改。所以这就像一个包含所有用户更改的对象。

2.然后写了一个函数将这个Queue的内容保存到数据库中。

function start(){
 var changeData = dq.get();  //getting the data from Queue

  while(changeData !== undefined){
    $.ajax({
      type: 'POST',
      url: '/ci/ajax/insert/',
      data: {changeData},
      success: function(data, status, xml){
        alert('succefully inserted data -- '+data);
      }
    });
    changeData = dq.get();
  }

  setTimeout(function(){ start(); }, 5000);
};

start();

这里我将间隔设置为5秒。

问题在于,我在5秒内进行了两次或更多次更改,但是,只有第一次更改才会更新。但是根据我所做的更改,我会收到2次或更多次警报。

我哪里错了?

同时建议我实现自动保存功能的更好方法。

谢谢!

1 个答案:

答案 0 :(得分:1)

你应该在setTimeout方法中定义success它会很棒,因为当你的第一个请求完成时会产生第二个请求,否则如果你不等待服务器响应并发送没有。请求会增加服务器上的负载

function start(){
 var changeData = dq.get();  //getting the data from Queue

  while(changeData !== undefined){
    $.ajax({
      type: 'POST',
      url: '/ci/ajax/insert/',
      data: {changeData},
      success: function(data, status, xml){
  setTimeout(function(){ start(); }, 5000);// defines when first request is accomplished
        alert('succefully inserted data -- '+data);
      }
    });
    changeData = dq.get();
  }


};

start();