0

我正在 wamp 服务器上使用 php 和 jquery 构建 rss 提要阅读器。

在页面加载时,我有网站列表,

<ul class='list'>
     <li>Site1 <input type='hidden' value='http://site1.rss/' /></li>
     <li>Site2 <input type='hidden' value='http://site2.rss/' /></li>
     <li>Site3 <input type='hidden' value='http://site3.rss/' /></li>
</ul>

为了从“getFeed.php”页面获取提要,我使用 jquery 代码,

$('.list li').live('click', function() {
     var url = $(this).find('input').val();
     $.post("getFeed.php",
            {url:url},
            function(data) {
                 $('.feed').html(data);
            });
});

这段代码就像一个魅力。现在,如果我在第一个站点的请求完成之前单击另一个站点,则会出现问题。

那时如果第一个站点的响应很慢,那么我应该从第二个站点得到结果。但是,当第一个站点响应较晚时,结果将更改为第一个站点。

问题类似于 [question]: Abort Ajax requests using jQuery

我已经尝试过此代码,但无法正常工作

$(document).ready(function() {
     var xhr;

     $('.list li').live('click', function() {
          xhr.abort();
          alert("testing flag");
          var url = $(this).find('input').val();
          xhr = $.post("getFeed.php",
                 {url:url},
                 function(data) {
                      $('.feed').html(data);
                 });
     });
})

但是,此代码无法发送请求。因此,我在 xhr.abort() 行之后放置了一个测试警报标志。但警报也不起作用。可能是 xhr.abort() 中的问题;线。

4

2 回答 2

1

xhr.abort();将导致错误,因为 xhr 在您第一次调用该函数时未定义,请尝试类似xhr && xhr.abort();

于 2013-01-21T05:17:33.270 回答
1

你确定要中止吗?我什至不确定它是否适用于所有浏览器,如果可以,用户可能会惊讶于他没有得到他点击的内容。我会

a)不推荐使用.on而不是使用, b)在获取结果或更好的情况下阻止点击:对点击进行排队.live

请参阅:jQuery 中的队列是什么?

有一个ajax队列示例

于 2013-01-21T08:34:46.273 回答