我使用pjax,我想配置它來渲染頁面(替換html),就好像一切正常,即使頁面響應非200代碼(404 ,500)。pjax - 渲染錯誤頁面
我的404頁和500頁被調整好看,我不需要pjax刷新頁面。
我無法弄清楚如何從我讀過的所有文檔中做到這一點,包括original git repo。歡迎任何幫助。
我使用pjax,我想配置它來渲染頁面(替換html),就好像一切正常,即使頁面響應非200代碼(404 ,500)。pjax - 渲染錯誤頁面
我的404頁和500頁被調整好看,我不需要pjax刷新頁面。
我無法弄清楚如何從我讀過的所有文檔中做到這一點,包括original git repo。歡迎任何幫助。
您甚至可以從pjax成功函數:錯誤處理程序,並返回false,以防止自動刷新難:
$(document).on('pjax:error', function(event, xhr, textStatus, errorThrown, options) {
options.success(xhr.responseText, textStatus, xhr);
return false;
});
謝謝你,這個答案完美工作! –
我實際上一直在處理同樣的問題 - 這是jQuery PJAX的奇怪怪癖,當你點擊一個404/500頁面時,它似乎按照你所期望的來執行請求(例如,檢索404頁面的內容),但不是通常的替換,而是重新加載。
當您點擊404/500頁面時觸發的pjax:error
事件實際上是導致硬刷新的原因,很像pjax:timeout
。你可以做的是使用類似於下面的東西防止硬刷新:
$(document).on('pjax:error', function(event, request) {
event.preventDefault();
});
另外,如果你檢查在上面request
對象的內容,你會看到PJAX實際上成功檢索404頁面的內容,可在responseText
中找到。在這一點上,我想你可以用jQuery替換你的PJAX容器的全部內容與responseText
的內容,但我懷疑這會破壞pushState。
我仍在努力讓所有工作正常,但我希望這有助於解決問題,因爲這方面的文檔很少!
我其實開始寫這個,但沒有檢查'request'變量(我發現的例子沒有收到它)。會很好,如果它只是一個標誌'continue_on_error = true' – Mikhail
,您應該考慮選擇是正確的給出了答案@fyrite。它對我很好。 –