首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Drupal更好地公开过滤器-中止Ajax请求

Drupal更好地公开过滤器-中止Ajax请求
EN

Stack Overflow用户
提问于 2012-10-16 20:57:44
回答 2查看 1.5K关注 0票数 0

我使用的是Drupal7和Views3,我已经安装了更好的过滤器模块。我公开了一些过滤器,并且我使用ajax,所以当我改变复选框或选择值时,就会出现ajax请求。一般来说,一切都运行得很好。

但是有一个问题我不能处理:/ Basicly,当我改变select值时,ajax请求被发送。在此请求产生结果之前,我再次更改了select值,但没有ajax请求。我不能发送另一个ajax请求或中止现有的请求。

所以我的问题是,如何中止这个ajax请求并立即发送下一个请求?

EN

Stack Overflow用户

回答已采纳

发布于 2013-06-05 06:33:24

我也有同样的问题,并且设法在不修改任何核心文件的情况下解决了它。这个想法是监听jQuery的全局ajaxSend()事件,存储当前请求的jqXHR对象,然后在过滤器的单击处理程序中,检查请求是否已经完成,如果没有则中止。

代码语言:javascript
运行
复制
var filterXHR = null;
$(document).ajaxSend(function (event, jqXHR, settings) {
  filterXHR = jqXHR; // cache XHR object for current ajax request
});

// event handler for when a filter is selected/changed/etc.
$('#filters-block .form-item a').click(function () {

  // check if there is a previous request that has not yet completed
  if (filterXHR && filterXHR.readyState != 4) {
    // abort ajax request
    filterXHR.abort();

    // subsequent requests will add their own progress indicator,
    // so you probably want to remove the old one here 
    $('.ajax-progress').remove(); 
  }

  // submit exposed form, do other stuff, etc.. 
});

我知道复活旧帖子通常是不好的互联网礼仪,但由于这是我在寻找信息时在谷歌上出现的第一个(也是唯一一个)有意义的结果,我想在这里分享我的解决方案是合适的,以帮助其他可能有类似问题并最终登陆这个页面的人。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12915259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档