我很困惑如何實現這一點。我有一個頁面,它有一個彈出式過濾器,它有一些輸入元素和一個「應用」按鈕(不是提交)。當點擊按鈕時,會創建兩個jquery .get()調用,它們會將圖形,DataTables網格,照片和其他信息加載到四個單獨的選項卡中。在圖形內部,如果點擊某個特定元素,用戶將被帶到另一個頁面,在該頁面中將數據鑽取到更精細的級別。所有這一切運作良好。Ajax狀態歷史in coldfusion頁面
問題是,如果用戶決定回到原來的頁面,但與ajax生成的圖形/網格/照片等。原本我以爲我會存儲一個會話變量與過濾器變量用於形成原查詢,並在返回頁面時,如果找到會話變量,則會再次進行原始ajax調用,重新填充選項卡。
我用這種方法找到的問題是Coldfusion在使用瀏覽器的後退按鈕返回到頁面時無法識別會話變量已設置。如果我在原始頁面和第二頁面都轉儲了會話變量,我可以在第二頁看到新設置的變量,如果我通過導航菜單轉到原始頁面,我可以看到它,但如果我使用後退按鈕。
SO ....從閱讀這裏關於ajax瀏覽器歷史插件的帖子,似乎有各種各樣的jquery插件幫助,包括燒烤。我用這種方法看到的問題是它需要使用錨元素來觸發它,然後使用錨的href屬性修改查詢字符串。我想我可以修改頁面以包含一個隱藏的錨點。
我的問題,最後是:是ajax歷史插件像燒烤最好的方式來實現,或者有辦法讓Coldfusion在通過後退按鈕返回頁面時看到新創建的會話變量?或者,我是否應該考慮重新設計頁面,以便將Ajax調用替換爲表單提交返回頁面的方式?
在此先感謝,一如既往。
編輯:一些代碼,以幫助澄清事情: 下面是使原來的Ajax調用按鈕:
<button id="applyFilter">APPLY</button>
和部分呼籲#applyFilter的JS的,包裹在$(文件)。就緒( ):
$('#applyFilter').click(function(){
// fill in the Photos tab
$.get('tracking/listPhotos.cfm',
{
id: id,
randParam: Math.random()
},
function(response){
$('#tabs-photos').html(response);
}
);
});
最後,當用戶調用對AJAX生成的圖形向下鑽取,它使用已被填充了所需要的變量MaintAction形式:
function DrillDown() {
//get the necessary variables and populate the form inputs
document.MaintAction.action = "index.cfm?file=somepage.cfm&Config=someConfig";
document.MaintAction.submit();
}
並且將我們帶到新頁面,我們希望從該頁面返回到第一頁,但使用裝載了ajax的照片。
如果您提供了一些代碼,我可以向您展示如何執行我描述的會話+同步XHR方法。 – 2012-01-13 17:54:43
非常感謝!你需要多少代碼 - 只需要ajax調用? – earachefl 2012-01-13 18:01:30
我會說,如果你編輯了你的原始問題,併爲你的AJAX組件和相關的JS添加了一些CFML,那應該足以與之合作。 – 2012-01-13 18:09:45