我的网站运行速度非常慢,我所做的是我有一个文本区域,我想将其自动保存到数据库中。我正在执行 jQuery Ajax 调用来自动保存文本区域内容。
我在文本区域上的事件如下:
$(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 对象来做到这一点吗?
最佳答案
您可以检查用户上次输入的时间,如果时间长达 5 秒,则进行 Ajax 调用?
编辑:或者只是使用 setInterval 每隔 X 秒使用 Ajax 保存 textarea 文本;)
关于javascript - 从对象运行 jQuery Ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23839788/