2013-12-17 59 views
1

我寫了一個Django視圖,迴應ether a text/htmlapplication/json,具體取決於request.is_ajax()。 到目前爲止這麼好,但是當我使用我的瀏覽器歷史按鈕時,我最終得到了一個JSON響應而不是HTML。Django is_ajax的歷史回

我找不出這個問題。這是真的,jQuery ajax請求在頁面加載後獲得相同的url,但這不應該在歷史中結束,或者它應該?

謝謝,喬

+1

我的預感是瀏覽器緩存是真正的問題。如果你回去重新加載,它會加載html版本嗎?同樣,如果您在返回之前直接清除瀏覽器緩存,它是否會加載HTML或JSON? – sk1p

回答

5

如果根據request.is_ajax()發送不同的內容,你需要發送Vary: X-Requested-With到瀏覽器。這樣,瀏覽器將能夠基於請求上的X-Requested-With標頭的值區分這兩種響應。你可以通過:

from django.views.decorators.vary import vary_on_headers 

@vary_on_headers('X-Requested-With') 
def yourview(request, ...): 
    pass 
+0

謝謝sk1p,工作得很好。 – codingjoe