'锁定'a用户's在AJAX调用期间的操作

Technique for 'Locking' a User's Actions During AJAX Calls

本文关键字:操作 调用 锁定 用户 AJAX      更新时间:2023-09-26

我经常发现自己在设计对服务器、外部API、HTTP请求等进行AJAX调用的应用程序。问题是,当这种异步调用发生时,用户仍然可以点击进行相同AJAX调用或中断应用程序流的项目,但我想知道最被接受的方式是什么?

为了更具体地说,假设我有一个button元素来进行AJAX调用,还有一个form元素来更改我的应用程序用于AJAX调用的一些数据。设计按钮和表单函数以使它们在button'sAJAX调用过程中不起作用的最佳方法是什么?

实现所需功能的最佳方法是通过函数引导AJAX调用,这样您就可以在该函数中检查请求是否处于活动状态。下面是一个假设您使用JQuery:的示例

active_ajax_call = false;
function get_ajax(url, senddata) {
    if(active_ajax_call == false) {
        active_ajax_call = true;
        $.ajax({
            type: "POST",
            url: url,
            data: senddata
        }).done(function (data) {
            active_ajax_call = false;
            console.log(data);
        });
    }
}
get_ajax("some_url", {name: "John", location: "Amsterdam"});

当然,向网站用户提供一个不错的ajax加载程序或其他东西,让他们知道数据正在被提取。

在按钮的处理程序中,禁用按钮(视觉上和功能上),然后执行AJAX调用。从AJAX调用返回,重新启用按钮。

这就是主要网站(例如PayPal)的做法。