javascript - 从对象运行 jQuery Ajax

标签 javascript jquery ajax

我的网站运行速度非常慢,我所做的是我有一个文本区域,我想将其自动保存到数据库中。我正在执行 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/

相关文章:

javascript - getInitialProps 在 Next.js 中导入数据

javascript - 我们如何将 html 元素作为参数传递给 handlebar helper 以实现显示更多/更少的功能

jquery 切换类不工作

javascript - 中间固定位置div

javascript - 如何更新select2类型的x-editable的源

javascript - 检查数组是否有不同的元素

javascript - 重置后淡入不起作用

javascript - 如何正确比较来自 ajax post call "data"的响应

javascript - AJAX 表单未提交并给出错误

javascript - 表单交互上的 AJAX 和提交按钮