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);
            });
});

このコードは魔法のように機能しています。最初のサイトのリクエストが完了する前に、別のサイトをクリックすると問題が発生します。

その時、最初のサイトの応答が遅い場合は、2 番目のサイトから結果が得られます。しかし、最初のサイトの応答が遅れると、結果は最初のサイトに変わります。

質問は [質問] に似ています: jQuery を使用して Ajax リクエストを中止する

私はすでにこのコードを試していますが、機能していません

$(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() 行の後にテスト アラート フラグを 1 つ追加しました。しかし、アラートも機能していません。xhr.abort(); に問題がある可能性があります。ライン。

4

2 に答える 2

1

中止してもよろしいですか?すべてのブラウザーで機能するかどうかさえわかりません。機能する場合、ユーザーはクリックしたものが得られないことに驚くでしょう。私は...するだろう

a).on代わりに.livewhich を非推奨として使用し、
b) 結果がフェッチされている間はクリックをブロックするか、より良いものにします: クリックをキューに入れます

参照: jQuery のキューとは?

ajaxキューの例があります

于 2013-01-21T08:34:46.273 に答える
1

xhr.abort();最初に関数を呼び出したときに xhr が定義されていないため、エラーが発生します。次のようなものを試してくださいxhr && xhr.abort();

于 2013-01-21T05:17:33.270 に答える