2015-10-15 15 views
2

在我的一個頁面中,我有一個由pjax處理的鏈接。基本上用戶點擊一個項目,這個項目變成「檢查」(並保存在數據庫中)。僅在重定向時在pjax中執行pushstate

我已禁用這些請求的pushState,因爲它沒有任何意義,用戶有效地停留在同一頁面中,所以更改url是違反直覺的。

但是,有這種情況下,此pjax請求導致重定向到登錄頁面(當用戶未登錄時)。當我真的需要pushState工作時,這並不是因爲我首先禁用了它。

是否有可能以這樣的方式的正常反應,而不pushState的工作配置pjax,但重定向響應(與X-Pjax-Url插頭來實現)執行pushState的?

+1

您可以輕鬆地處理在同一頁2不同pjax配置。請添加一些關於你如何使用pjax的細節。 – soju

+0

當然,我可以製作兩個不同的pjax塊,一個帶重定向,一個不帶,但我需要_one_鏈接根據服務器的回覆代碼有不同的行爲。實際上,我查看了pjax的源代碼,現在我懷疑它是可能的,因爲如果響應代碼是301,302或303,它總是會執行replaceState。 – Beowulfenator

+0

您不需要另一個pjax「block」 – soju

回答

1

使用當前功能無法做到這一點。我爲pjax增加了兩個選項,我的PR已被pjax的yii2分支接受。因此,事不宜遲:

https://github.com/yiisoft/jquery-pjax

//pushRedirect - Whether to pushState the URL for redirects. Defaults to false. 
//replaceRedirect - Whether to replaceState the URL for redirects. Defaults to true. 

// ... 

jQuery(document).pjax("#example_selector", { 
    "push": false, 
    "replace": false, 
    "pushRedirect": true, 
    "replaceRedirect": false 
});