0
$(".delete").click(
    function()  {
        var thesender = this;
        $(thesender).text("Del...");
        $.getJSON("ajax.php", {},
            function(data) {
                if (data["result"])
                    $(thesender).remove(); // variable defined outside
                else
                    alert('Error!');
            }
        );

        return false;
    }
);

如果用户在调用 ajax 回调之前单击另一个“.delete”,这会导致问题吗?

4

3 回答 3

2

它会同时触发另一个 ajax 请求做同样的事情。这是否会导致问题取决于事物的服务器端。

通常,您要删除某种 id 或键...我假设稍后在此代码中您将删除,但现在它只是发出另一个删除并调用ajax.php...其结果完全取决于该 PHP页。

当 ajax 请求完成时,该 ajax 请求发生回调,每个请求在这方面都是独立的,因此每个回调都是单独处理的。 在您当前的闭包内,因此它对于每个请求和它各自的回调也是唯一的。thesender

于 2010-04-18T16:48:43.243 回答
1

每次click调用处理程序时,都会创建一个单独的闭包,因此每个 AJAX 回调都会引用正确的变量。

因此,您无需担心。(假设服务器可以处理请求)

于 2010-04-18T16:52:48.117 回答
1

它将触发另一个事件。如果您希望事件只触发一次,您可以使用一个而不是单击。或者,您可以跟踪 AJAX 请求是否正在进行;例如,使用如下数据:

$('.delete').click(function () {
  if ($(this).data('inProgress')) {
    // Request in progress; cancel?
    return;
  } else {
    $(this).data('inProgress', true);
  };
});

您也可以通过使用全局变量、添加类等来实现相同的目的。

于 2010-04-18T16:52:50.533 回答