1

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

[网站设计使用:CodeIgniter 和 JQuery]。

这个功能,我实现如下。

1.在javascript中创建了一个队列数据结构,我将用户所做的所有更改推送到该结构中。所以这就像一个包含所有用户更改的对象。

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 次或更多次警报。

我哪里错了?

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

谢谢!

4

1 回答 1

1

您应该setTimeoutsuccess方法中定义它会很棒,因为当您的第一个请求将完成时,然后生成第二个请求,否则如果您不等待服务器响应并发送否。请求增加您的服务器上的负载

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();
于 2013-06-30T18:03:18.957 回答