2010-04-28 137 views
4

我有一個<ul>刷新每十秒鐘,以檢查是否有任何新的推文(它從推送飼料拉)。這在Firefox和Chrome等中運行良好,但如果Internet Explorer在任何版本中都不起作用。jQuery的Ajax刷新不工作在IE

我的代碼如下:

setInterval(function() { 
    $("#banter .scroll-pane").load(location.href+" #banter .scroll-pane>*",""); 
}, 10000); 

我的PHP函數創建列表如下:

function showTweets($section, $limit, $class) { 
    $result = mysql_query("SELECT * FROM hash WHERE section = '".$section."' ORDER BY date DESC LIMIT ".$limit); 

    echo '<ul class="scroll-pane '.$class.'">'; 
     while($row = mysql_fetch_array($result)) { 
      echo '<li>'; 
       echo '<p>'.html_entity_decode($row['tweet']).'</p>'; 
       echo '<a href="'.$row['user_url'].'">'.$row['user'].'</a>'; 
      echo '</li>'; 
     } 
    echo '</ul>'; 
} 

任何想法是怎麼回事? 感謝

+0

您能否提醒(location.href);並接收當前的URL? – GlenCrawford 2010-04-28 10:02:13

+0

是的,我可以提醒,它提醒在IE中的正確的URL。 – Probocop 2010-04-28 10:27:36

回答

4

我設法解決它,事實證明這是IE瀏覽器的緩存問題。因此,爲了解決這個問題,我把一個包含unix時間的唯一查詢放在調用PHP文件的末尾。例如:

setInterval(function() { 
    $("#banter .scroll-pane").load('test.php'+"?ms=" + new Date().getTime()); 
}, 6000); 

完美!

1

.load的documentation()狀態此有關加載頁面片段:

注意,檢索到的文件不能是一個完整的HTML文檔;也就是說,它不能包含(例如)<html>,<title><head>元素。 jQuery在元素上使用瀏覽器的innerHTML屬性來解析文檔,而大多數瀏覽器不允許以這種方式解析非正文元素。

這可能是這裏的問題 - 因爲你正在加載location.href,我假設你找回完整的HTML文檔。創建一個只檢索HTML相關部分的PHP頁面可以解決這個問題。

+0

嗨,我試過這個,我把我的函數放在一個PHP文件中,然後調用它,它仍然不會在IE中更新。 – Probocop 2010-04-28 10:48:15

1

我知道這個問題已經回答了,但是如果有人今天或者之後讀到這個問題,我想問題就在於緩存,IE會在緩存頁面的響應,因此它不會再要求它。

在服務器端添加以下行以防止它出現。

header('Cache-Control: no-cache');