发信号通知定期ajax呼叫以终止

时间:2016-04-20 18:25:32

标签: javascript ajax asp.net-mvc

我为onclick发送了一个radio button事件,该事件调用了一个函数,该函数会启动对某个网址的AJAX调用

MVC cshtml视图中的示例

<script>
        function onClick(selectedRowId) {
            GetData("/home/GetData/" + selectedRowId);
        };
</script>

Ajax调用

function GetData(url) {
    $.ajax({
        url: url,
        type: "GET",
        cache: false,
        contentType: "application/json; charset=utf-8",
        success: onSuccess,
        error: onError,
        complete: function (xhr, status) {
            setTimeout(function () {
                GetData(url);
            }, 10000);
        }
    });
}

如果选择了不同的radio button,我需要使用所选的onClick调用radio button id方法,这会再次启动对具有不同ID的网址的调用。

但是,我希望以前的AJAX函数调用终止,因为AJAX onSuccess方法使用为特定选定Id检索的数据更新html元素。

在启动新呼叫之前,是否有任何方式表示先前的呼叫已终止?

解决这个问题的一种方法可能是

a)不要将id作为网址调用的参数

b)在onClick方法中向服务器发送调用以设置Id变量(这使服务器知道必须为该Id返回所有数据)

c)然后确保只调用一次ajax函数,服务器将根据(a)中传递给它的Id信息更改返回的数据

每次点击按钮时,不确定服务器往返是否值得。

1 个答案:

答案 0 :(得分:0)

我能想到的最好的是每次onClick被触发时,它需要缓存您对最新选择的一个感兴趣的selectedRowIndex。如您所述,服务器需要返回该ID。这样在你的onSuccess函数中,你只需要处理匹配ID的返回并忽略任何其他。

我认为你不能真正停止以前的ajax。您无权再访问以前的ajax对象。只需忽略以前的回复。