例如,在jQuery中,設置一個鏈接來加載某個區域,我應該在調用history.pushState之前加載內容嗎?什麼是AJAX負載和history.pushState的推薦順序?
$('#link').click(function() {
$('#region').load('regionContent', function() {
history.pushState(null, null, 'newUrl');
});
return false;
});
或者我應該在調用history.pushState之後加載內容?
$('#link').click(function() {
history.pushState(null, null, 'newUrl');
$('#region').load('regionContent');
return false;
});
前者似乎最好給我,因爲我覺得URL應該不會改變,直到內容的做法,但我已經看到後者更經常地(例如https://github.com/blog/760-the-tree-slider),所以我不知道這被認爲是最佳實踐。
如果我正確理解此實現,您的答案意味着應該在內容加載之前推送歷史記錄。除了實現的一致性(即內容是響應並僅響應單個事件加載的),除了實現的一致性之外,有什麼特別的原因爲什麼這是可取的? –
另外,在加載內容之前推送歷史記錄在更一般的情況下將不起作用,其中必須在服務器上確定推送的URL(例如,帶驗證的POST-REDIRECT-GET - 如果驗證成功,則推送新的URL,如果失敗,則不要推送任何URL)。 –
我傾向於認爲首先更新狀態,然後加載內容是要走的路,因爲這是網絡在過去20年中的工作方式,並打算工作。您導航到新頁面,狀態發生變化,您將加載新內容。內容可能是一個錯誤頁面。例如,如果我將狀態更改爲不存在的頁面,我希望內容成爲非現有狀態的404,而不是在當前工作狀態中顯示錯誤。 – balupton