EXTJS 4:选择性中止Ajax请求

4
在我的应用程序中,我有许多ajax请求会不时地执行。其中一个是使用settimeout定时执行的,另一个是由用户交互触发的。我的问题在于用户交互部分。
情境是当用户设置参数并点击按钮后,它会执行一个ajax请求。如果他在参数方面出现错误,则用户将进行一些调整,然后再次执行ajax请求,而之前的请求仍在进行中。
我想要终止之前的请求,而不使用abortall(),因为如我之前所说,还有其他请求不应被打断。因此,这就像选择要中止的请求一样。我该怎么做?请帮忙。
1个回答

3

Ext.Ajax有一个属性autoAbort : Boolean

是否应该中止任何挂起的请求。

默认值:false

自从版本:1.1.0

将用户发送的Ajax设置此属性为true,这样它就不会干扰setInterval Ajax。此外,确保您具有客户端和服务器端验证,以避免错误参数。在客户端解决错误参数比让用户提交虚假数据更快、更便宜和更用户友好!

Ext.Ajax.request({
    url: '/echo/json/',
    params: {
        id: 1
    },
    autoAbort : true, 
    success: function(response){        
          //do something
    },
    failure:function(response){
         //do something
    }
});

这里是在fiddle上的示例!


哇,那真是一个非常棒的小把戏。不错。谢谢你。这正是我在寻找的。谢谢。 - oneofakind
问题是,Ext Store 上有自动中止功能吗?我正在使用带有 Ajax 代理的存储。 - oneofakind
不可以,但是你可以通过Ext.Ajax调用覆盖Ajax代理中的'doRequest'方法,并将autoAbort属性设置为true。 - Davor Zubak
它是否会自动中止所有挂起的请求,还是仅限于同一URL的请求?例如,如果我正在进行搜索,我可能不想中止不相关的请求。 - Alex
1
@Alex,不会的。它只会中止设置了autoAbort的请求。请查看Ext.data.Connection的源代码。 - Davor Zubak
@DuvorZubak 或许自此发布以来情况已经有所改变,但在 Ext 6.6.0 中,autoAbort: true 将会终止通过 Ext.Ajax.request 发起的所有挂起请求。请参阅 Ext.data.Connection 源代码 中的 createRequest 方法。 - Grant Humphries

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接