2014-05-23 47 views
0

我的網站工作得很慢,我所做的是我有一個textarea,我想要自動保存到數據庫中。我正在做jQuery Ajax調用來自動保存textarea內容。從對象運行jQuery Ajax

我在textarea的事件如下:

$(document).on('keyup','#notepad',function(e) { 
    var text = $(this).val(); 
    Api.request({ handler: 'user', action: 'notepad', text: text }); 
}); 

的問題是,如果我快速型的「Hello World!」,那麼它將滯後,由於12所需要Ajax調用。

我在那種情況下試圖在jQuery Ajax中使用abort()方法,但它似乎並不奏效,因爲沒有一個調用實際上被取消。

我的代碼如下:

function Api(){ 
    this.current = $.ajax(); 
    this.request = function(options, apiCallback){ 
     // default arguments 
     options = typeof options !== 'undefined' ? options : {}; 
     apiCallback = typeof apiCallback !== 'undefined' ? apiCallback : function(){}; 

     this.current.abort(); 
     this.current = $.ajax({ 
      type: 'POST', 
      url: "api?"+new Date().getTime(), 
      data: options, 
      dataType: 'json', 
      async: false 
     }) 
     .done(function(data) { 
      apiCallback(data); 
     }) 
     .fail(function() { 
      apiCallback({status: 'FAILED'}); 
     }) 
    }; 
} 
var Api = new Api(); 

沒有人有任何想法,我怎麼可以使用JavaScript對象做到這一點?

+1

我還沒有看過中止,但我敢打賭,只是取消聽迴應。我不確定你爲什麼要自動保存到數據庫。我會使用cookies。使用設置的時間間隔,而textarea有焦點檢查更改並將其保存幾秒鐘。然後(如果你仍然想)使用ajax更少地保存在數據庫中。當你的textarea失去焦點時,不要忘記clearInterval。 – DutGRIFF

回答

1

您可以檢查用戶上次輸入的時間(如果時間長達5秒),請進行Ajax調用?
編輯:或者只是使用setInterval保存textarea文本使用Ajax每X秒;)