我正在开发一个项目,允许用户在Pole
Country
City
的屏幕(左侧)上选择条件,并且有一个表格(我们有一些小部件)正在使用)根据所选标准显示数据。
让我画一幅画给我的问题一些背景
群组
国家
城市
纽约市
旧金山
北京
这些只是我想到的一些例子 - 它更具扩展性。
另一个注意事项,如果不选择Country
,则无法选择Pole
,如果不选择City
,则无法选择Country
(以便将其过滤掉)。< / p>
每当用户单击其选择旁边的复选框时,将使用提供数据的URL执行AJAX $ .get调用。我相信这个URL实际上是我们的Controller类(但这个实现并不重要)。
选择数据时,此Web应用程序不会太快,聚合数据需要几秒钟。现在让我说我选择了
Americas
和United States
(每个都会调用ajax,过滤我的数据)。
如果我选择San Francisco
,然后决定选择New York City
,则只会向我提供San Francisco
的数据而不是两者的数据,同时选中复选框。< / p>
现在这对我有意义,因为$ .get调用是异步的。第一个电话是赢得比赛条件。
然而,这被报道为一个错误,我需要一个解决方案来解决它。我对Javascript不是很精通,我想知道是否有人有任何想法。
我正在玩延迟对象,如果我能找到一种方法让它与那些一起工作但我不能。
在进行这个ajax调用之前,可能会终止任何ajax调用会很好吗?这样,旧金山的电话将被终止,但两个城市的通话都将通过。
有人想过吗?
Thansk!
答案 0 :(得分:1)
您可以将ajax分配给主要返回XMLHttpRequest
请求的变量。
然后您可以中止该特定请求。你可以尝试这些行
var requestPool = null;
var request = $.ajax({
...
...
beforeSend: function() {
// Check if requestPool is not null
// abort the previous request
if(requestPool) {
requestPool.abort();
}
// add the current request to the pool
requestPool = request;
},
success: function() {
// your success callback
},
complete: function() {
// no more requests
requestPool = null;
}
});
答案 1 :(得分:0)
如果您正在跟踪$ .get调用的句柄,则可以中止它们。
可能将所有相关的ajax调用存储在一个数组中,然后循环并中止它们。什么时候 点击一个复选框。