2011-11-24 63 views
2

我有一個頁面上的RSS鏈接/ URL列表,我試圖循環使用jQuery的.each功能。在這個循環內我試圖使用.ajax功能發送鏈接到一個php頁面,它將運行,然後返回1表示成功或0表示失敗。我的.ajax'success'函數將使用此1或0將頁面上鍊接的顏色更改爲綠色,如果不成功,則爲紅色。jQuery:在.each()中使用.ajax()

下面是我的代碼不起作用。它有什麼問題?

jQuery(document).ready(function($) { 

    $('#fetch_rss').click(
     function() { 

      $('tr.rssrow').each(
       function() { 

        var link = $('a.rsslink', this).attr('feed_link'); 

        $.ajax({ 
         url: "rss_process.php", 
         type: "POST", 
         data: {'link':link}, 
         success: function(msg) { 
          if (msg > 1) { 
           $('td.link', this).addClass('green'); 
          } else { 
           $('td.link', this).addClass('green'); 
          } 

         }, 
         fail: function(msg) { 
          $('td.link', this).addClass('orange'); 
         } 
        }); 

       } // .each callback 
      ); // .each 
     } // .click callback 
    ); // .click 

}); 
+0

我可能是錯的,但通常你必須將一個字符串傳遞給'data'屬性。 – danyloid

+0

「feed_link」不是允許的屬性名稱,所以我想知道這是否是問題所在。我們需要知道發生了什麼樣的問題。和HTML一起發佈也將有所幫助。 – dnuttle

回答

1

這裏面的ajax回調並不是指原來的這個。偏好

你應該添加到您的$。阿賈克斯()哈希:在the jQuery docs

context : this 

見「上下文」

這是你的代碼錯誤的另一件事是,你經常是使用這個而不是$(this)。例如:

var link = $('a.rsslink', this).attr('feed_link'); 

應該寫成:

var link = $('a.rsslink', $(this)).attr('feed_link'); 

同樣爲:

$('td.link', this).addClass('green'); 

應該是:

$('td.link', $(this)).addClass('green'); 

還有其他地方你也這樣做。

另一件事。以下總是將類「綠色」添加到td.link:

if (msg > 1) { 
    $('td.link', this).addClass('green'); 
} else { 
    $('td.link', this).addClass('green'); 
} 

您應該使用不同的類(橙色?)處理else部分。

+0

我最誠摯的'謝謝你'對這個問題的快速回答,Kristinn!這解決了它。另外,感謝您使用'this'的提示。我不知道。 –

+0

非常歡迎。 –

+0

如果您將我的答案標記爲正確答案,並點擊向上箭頭給出答案,我將不勝感激。 :-) 謝謝。 :-) –

相關問題