Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 停止重复的ajax调用_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 停止重复的ajax调用

Javascript 停止重复的ajax调用,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在制作一个应用程序,里面有很多产品,每个都有一个按钮。我的计划是用户单击其中一个按钮,我有一个javascript(jquery)函数,它每秒开始发出一个ajax请求,使用按钮的id作为参数来标识产品 我计划使用的函数是这里的第二个答案 这样做的目的是在用户对产品感兴趣时,每隔一秒钟检查一次产品的状态(它可能会不断变化) 当用户再次单击按钮时,我想停止检查此特定产品的状态,但我不知道如何执行此操作。在我的脑海中,我想象用户可能单击了3个按钮,因此每秒发生3个ajax请求,每个请求都有不同的产

我正在制作一个应用程序,里面有很多产品,每个都有一个按钮。我的计划是用户单击其中一个按钮,我有一个javascript(jquery)函数,它每秒开始发出一个ajax请求,使用按钮的id作为参数来标识产品

我计划使用的函数是这里的第二个答案

这样做的目的是在用户对产品感兴趣时,每隔一秒钟检查一次产品的状态(它可能会不断变化)


当用户再次单击按钮时,我想停止检查此特定产品的状态,但我不知道如何执行此操作。在我的脑海中,我想象用户可能单击了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说的做,或者使用,如果你从你发布的链接中选择了一些代码。