我为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信息更改返回的数据
每次点击按钮时,不确定服务器往返是否值得。
答案 0 :(得分:0)
我能想到的最好的是每次onClick被触发时,它需要缓存您对最新选择的一个感兴趣的selectedRowIndex。如您所述,服务器需要返回该ID。这样在你的onSuccess函数中,你只需要处理匹配ID的返回并忽略任何其他。
我认为你不能真正停止以前的ajax。您无权再访问以前的ajax对象。只需忽略以前的回复。