我寫了一個Django視圖,迴應ether a text/html
或application/json
,具體取決於request.is_ajax()
。 到目前爲止這麼好,但是當我使用我的瀏覽器歷史按鈕時,我最終得到了一個JSON響應而不是HTML。Django is_ajax的歷史回
我找不出這個問題。這是真的,jQuery ajax請求在頁面加載後獲得相同的url,但這不應該在歷史中結束,或者它應該?
謝謝,喬
我寫了一個Django視圖,迴應ether a text/html
或application/json
,具體取決於request.is_ajax()
。 到目前爲止這麼好,但是當我使用我的瀏覽器歷史按鈕時,我最終得到了一個JSON響應而不是HTML。Django is_ajax的歷史回
我找不出這個問題。這是真的,jQuery ajax請求在頁面加載後獲得相同的url,但這不應該在歷史中結束,或者它應該?
謝謝,喬
如果根據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
謝謝sk1p,工作得很好。 – codingjoe
我的預感是瀏覽器緩存是真正的問題。如果你回去重新加載,它會加載html版本嗎?同樣,如果您在返回之前直接清除瀏覽器緩存,它是否會加載HTML或JSON? – sk1p