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