0
在Chrome(版本21)javascript控制檯中調用pjax時,在我的開發日誌中看到兩個請求。我試圖改變超時,如this post中所建議的,但我仍然收到兩個請求。有任何想法嗎?pjax發出多個請求
$.pjax({timeout: 4000,
container: '[data-pjax-container]',
url: document.location.href });
在Chrome(版本21)javascript控制檯中調用pjax時,在我的開發日誌中看到兩個請求。我試圖改變超時,如this post中所建議的,但我仍然收到兩個請求。有任何想法嗎?pjax發出多個請求
$.pjax({timeout: 4000,
container: '[data-pjax-container]',
url: document.location.href });
所以問題是我沒有渲染應用程序模板,它沒有在http正文中返回任何內容。因此,它導致請求回退到標準GET的pjax代碼。
爲什麼我不渲染應用程序模板?好吧,我是一個假人並使用此方法在我的應用程序控制器
def get_layout
request.xhr? || request.headers['X-PJAX'] ? nil : 'application'
end
這裏的問題是,我在我的index.html.haml使用content_for
。
- content_for :sub_nav do
# view code
- content_for :main do
# view code
我application.html.haml模板看起來像這樣...
.col1
= yield :sub_nav
.col2
= yield :main
這裏的解決方案......
我重構控制方法爲應用助手
def is_pjax?
request.xhr? || request.headers['X-PJAX'] ? true : false
end
然後,我修改了應用程序視圖,不呈現各種元素,如頁眉,頁腳,javascripts,css,等
= render :partial => '/shared/footer' unless is_pjax?
現在.pjax請求將呈現頁面和模板(左列,主等),但不被已加載的現有元素。
希望這可以幫助別人。
爲什麼你的應用程序沒有在http正文中返回任何內容?難道它只是返回模板? – teaforthecat