Javascript 停止重复的ajax调用
我正在制作一个应用程序,里面有很多产品,每个都有一个按钮。我的计划是用户单击其中一个按钮,我有一个javascript(jquery)函数,它每秒开始发出一个ajax请求,使用按钮的id作为参数来标识产品 我计划使用的函数是这里的第二个答案 这样做的目的是在用户对产品感兴趣时,每隔一秒钟检查一次产品的状态(它可能会不断变化)Javascript 停止重复的ajax调用,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在制作一个应用程序,里面有很多产品,每个都有一个按钮。我的计划是用户单击其中一个按钮,我有一个javascript(jquery)函数,它每秒开始发出一个ajax请求,使用按钮的id作为参数来标识产品 我计划使用的函数是这里的第二个答案 这样做的目的是在用户对产品感兴趣时,每隔一秒钟检查一次产品的状态(它可能会不断变化) 当用户再次单击按钮时,我想停止检查此特定产品的状态,但我不知道如何执行此操作。在我的脑海中,我想象用户可能单击了3个按钮,因此每秒发生3个ajax请求,每个请求都有不同的产
当用户再次单击按钮时,我想停止检查此特定产品的状态,但我不知道如何执行此操作。在我的脑海中,我想象用户可能单击了3个按钮,因此每秒发生3个ajax请求,每个请求都有不同的产品id。我如何停止重复请求,该请求具有用户单击的产品id停止?我最近做了类似的事情,每隔几秒钟运行一次间隔,当一些事件发生时,我完全停止了这个过程。我假设您使用的是Javascript,如下所示。如果您愿意,您可以在计时器调用中检查“someVar”,具体取决于您
var someVar = false, intervalId;
$(function () {
// Attach event handler to button
$('#ButtonId').click(function (e) {
if (!someVar) {
e.preventDefault();
someVar = true;
//Start interval
intervalId = setInterval(CheckStatus, 3000);
} else {
// Stop the interval!
clearInterval(intervalId);
someVar = false;
}
});
});
function CheckStatus() {
// I used MVC, but you can use whatever you need to generate the URL
var checkUrl = '@Url.Action("CheckStatus", "SomeController", new { intervalId = "_intervalId_" })'.replace('_intervalId_', intervalId).replace(/&/g, "&");
$.ajax({
url: checkUrl,
type: 'GET',
contentType: 'application/json; charset=utf-8',
success: function (data) {
// do something with the status - data.Status perhaps?
},
error: function () {
//handle error
}
});
}
如果没有代码,我们帮不了你,所以我想在这里放一条评论,上面写着“42”。除了一个链接,你能分享你的尝试吗?使用
setInterval()
您可以始终使用clearInterval()
停止指定的间隔。您提到的问题是“只是为了练习”,他们说。每秒钟、每用户调用一次服务是一个非常糟糕的主意。也许通信服务器的signal-R=>client?按照Jay Blanchard说的做,或者使用,如果你从你发布的链接中选择了一些代码。