我很困惑如何实现这一点。我有一个页面,它有一个弹出式过滤器,它有一些输入元素和一个“应用”按钮(不是提交)。当点击按钮时,会创建两个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