【发布时间】:2014-12-15 16:42:33
【问题描述】:
背景信息
我有一个包含搜索页面的网络应用程序。此搜索提供了 3 个通过 ajax 填充的不同下拉框。 首次加载页面时,框 1 会填充默认位置列表。 当用户选择一个位置时,第二个下拉菜单会出现在同一页面上,并通过 ajax 填充所选位置内的建筑物。 选择建筑物后,会出现一个带有房间列表的最终下拉框。 一旦用户选择了一个房间,该页面就会显示有关该房间的详细信息,并且用户可以深入了解其中一个房间属性——这会将他们带到一个新页面。
问题描述
当用户完成查看房间详细信息网页并点击“返回”按钮时,我希望能够向他们显示他们上次离开的位置......这是包含他们之前所有选择的搜索页面带领他们进入房间细节。目前,当他们点击后退按钮时,默认搜索页面会加载并且他们之前的选择会消失。
保留搜索请求详细信息的最佳方式是什么? 我正在考虑向 URL 添加值……就像查询字符串一样。现在,URL 当然不会改变,因为搜索页面的一切都是通过 ajax / javascript 完成的。 但除了这个选项之外,我想知道是否有另一种想法/方法来完成同样的事情。
该解决方案必须适用于所有浏览器,包括 IE、Chrome、FFox、Safari。
代码
更改下拉菜单中的值时触发的 ajax 代码:
$('#Locations').live('change',function(){
$.ajax({
url:"<?php echo site_url('mycontroller/getbuildings/');?>" + "/" + $selectedvalue,
type:'GET',
dataType:'json',
success: function(returnDataFromController) {
logic to populate building drop down
}
$('#buiding_Locations').live('change',function(){
$('#room_locations').html('');
$('#search').hide();
var htmlstring;
$selectedvaluebranch_ = $('#Locations').val();
$selectedvaluebuiding_ = $('#buiding_Locations').val();
$.ajax({
url:"<?php echo site_url('mycontroller/getrooms');?>" + "/" + $selectedvaluebuiding_,
type:'GET',
dataType:'json',
success: function(returnDataFromController) {
logic to populate room list
}
在填充位置下拉列表的方法中,(mycontroller/getLocations)我添加了使用/检查会话变量的逻辑......现在当我点击后退按钮时,位置选择被保存。 “mycontroller/getLcations”方法是加载搜索页面时调用的默认方法。
但我想知道填充其他两个下拉框的最佳方法。如您所见,仅当用户更改“父”下拉框的值时才会填充它们。
也许我需要在我的控制器中创建另一个方法来查询所有 3 个框......并将所有数据发送到前端,而不是我现在这样做的方式......通过 3 个单独的调用3种不同的方法。 然后我需要将填充各个下拉框的逻辑从它们现在所在的位置移到一个可重复使用的函数中,该函数可以在用户进行新选择或我尝试使用时调用会话变量中的搜索数据。
如果有更简单的方法,请告诉我。我只是想确保我没有不必要地编写额外的代码/我正在正确重构。
【问题讨论】:
标签: javascript php ajax codeigniter search