首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于AJAX的AutoSave体系结构

基于AJAX的AutoSave体系结构
EN

Stack Overflow用户
提问于 2013-06-30 16:12:17
回答 1查看 1.6K关注 0票数 1

我想为我的站点实现AutoSave功能。

我的意思是,我希望所有的字段,由用户编辑的整个网站应该是自动保存,没有任何按钮单击。这样用户就可以继续编辑。

网站设计有: CodeIgniter和JQuery。

这个特性,我正在实现如下。

1.在javascript中创建了一个队列数据结构,并将用户所做的所有更改推入其中。因此,这就像一个保存所有用户更改的对象。

2.然后编写一个函数,将此队列的内容保存到数据库中。

代码语言:javascript
复制
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次或更多次。

我哪里出问题了?

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

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-30 18:03:18

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

代码语言:javascript
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17392315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档