0

很多时候,我发现自己设计的应用程序对服务器、外部 API、HTTP 请求等进行 AJAX 调用。问题是,虽然这种异步调用正在发生,但用户仍然可以点击进行相同 AJAX 调用的项目或中断应用程序的流程等。我尝试了各种黑客来防止这种情况发生,但我想知道最被接受的方法是什么?

为了使这一点更具体,假设我有一个button进行 AJAX 调用的form元素和一个更改我的应用程序用于 AJAX 调用的一些数据的元素。button's设计按钮和表单功能以使其在AJAX 调用过程中不起作用的最佳方法是什么?

4

2 回答 2

1

完成您想要的最佳方法是通过函数引导 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 加载器或其他东西,以便他们知道正在提取数据。

于 2013-02-10T20:10:09.560 回答
0

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

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

于 2013-02-10T19:46:05.840 回答