像我之前那麼多迷失的靈魂一樣,我在Ajax表單提交和IE瀏覽器緩存的蛇坑中掙扎。IE瀏覽器緩存和jQuery表單插件
我想寫一個簡單的腳本使用jQuery表單插件Ajaxify的WordPress的評論。它在Firefox,Chrome,Safari等等中運行良好。 al。,但在IE中,響應文本被緩存,導致Ajax引入錯誤的註釋。
jQuery(this).ajaxSubmit({
success:
function(data) {
var response = $("<ol>"+data+"</ol>");
response.find('.commentlist li:last').hide().appendTo(jQuery('.commentlist')).slideDown('slow');
}
});
ajaxSubmit會發送註釋WP-評論-post.php中,它吐出粗暴回整個頁面作爲響應。所以,儘管事實上它像蟾蜍一樣醜陋,但我仍然將響應文本粘貼在一個變量中,使用:last來隔離最近的評論,並將其放在原處。
但是,IE正在返回頁面的緩存版本,該版本不包含新評論。所以「.commentlist li:last」選擇之前的評論,其中的一個副本然後無用地滑落到原始的下方。
我已經嘗試在ajaxSubmit選項中設置「cache:false」,但它沒有效果。我試過設置一個url選項並加上一個隨機數字或時間戳,但是它最終被附加到提交評論給服務器的POST,而不是返回響應的GET,所以沒有效果。我不知道還有什麼可以嘗試的。如果我關閉瀏覽器緩存,一切都可以在IE中正常運行,但這顯然不是我期望任何人查看該頁面所能做的事情。
任何幫助將非常感激。提前致謝!
編輯一個進度報告:一些人建議使用PHP頭來防止緩存,這確實有效。麻煩的是,當提交新評論時,wp-comments-post正在將整個頁面吐出來,而且我可以看到添加標題的唯一方法就是將它們放入WordPress的帖子模板中,該模板會在所有帖子中禁用緩存次 - 不是我正在尋找的行爲。
有沒有一種方法來設置一個PHP條件 - 「if is_ajax」或類似的東西 - 這將保持在常規頁面加載期間應用頭文件,但在頁面被Ajax GET調用時插入它們?
麻煩與是什麼我添加到URL選項中ajaxSubmit會似乎僅適用於將評論發送給服務器的初始POST,但不應用於返回響應的GET。所以我看到一個POST爲「wp-comments-post.php&rand = [一堆數字]」,但是接下來的一個GET就是沒有rand字符串的頁面的url。這就是IE獲取錯誤數據的地方。 任何想法如何將字符串添加到該GET?我無法弄清楚如何與它進行交互。 – Harfleur 2010-02-22 20:05:50
後續:剛剛嘗試使用PHP標頭()將緩存控制設置爲無緩存,並且它像一個魅力一樣工作。所以這是進步!問題是它會阻止所有Wordpress文章中的緩存,這不是我想要的。儘管如此,仍然是朝着正確方向邁出的一步。 – Harfleur 2010-02-22 20:12:32
你應該只放置你不想緩存的.php頭文件。否則,你應該發送瀏覽器「是的,爲我做緩存」標題 – Warty 2010-02-22 20:57:30