首页 > 解决方案 > 快速重复ajax程序有什么危险吗?

问题描述

$('#gd').on('click', function(){
    // move up and down DOM elements
    // some ajax procedure to store new values on database (php/mysql)
});

长时间快速重复这个点击有什么危险吗?

例如 - 如果连接很差 - ajax 每次都不会完成吗?

我在我的实时服务器上进行了测试 - 似乎没有问题,但是......我仍然担心。

以及在这种情况下避免可能出现的问题的方法是什么 - 即如果用户不断快速单击#gd按钮。

标签: javascript

解决方案


这种“危险”可以更准确地描述为不受欢迎的行为。然而,这确实是一个应该被处理的问题——因为当只需要 1 个请求时发送多个请求会无缘无故地消耗客户端和服务器上的资源。

如果您想阻止用户在处理请求时单击按钮,请在客户端发送按钮后禁用该按钮,并在响应处理完成后重新启用它:

$('#gd').on('click', function(){
  // 1. do some stuff with DOM
  // 2. disable button + make ajax call
  $.ajax({someRequestOptions})
   .always(function() {
       // 3. re-enable button
   });
});

推荐阅读