散列标记,查询字符串和Ajaxified搜索结果

时间:2012-10-16 15:43:48

标签: javascript ajax codeigniter codeigniter-2

我有一个搜索表单,只要表单中的某些内容发生变化,就会自动发送我的Web应用程序的POST数据。 Web应用程序(用PHP / CodeIgniter编写)接受POST或GET并返回正确的结果并将其显示在页面上。一切正常。

现在,我担心的是URL并不反映获取当前搜索结果所需的查询参数。因此,如果有人复制了地址并将其共享,则点击该URL的人将无法看到预期的数据。书籍标记等同样的问题

可以在jQuery中更新查询字符串,但这会强制浏览器重定向到新的URL(当它执行时,页面会显示正确的搜索结果,因为Web应用程序实际上最初编写为非JS工作)。重定向意味着Ajaxifying的努力被浪费了。

似乎hash#可以用来更新地址而不会使浏览器重定向,但我似乎无法在非JS情况下使用该信息(我无法通过GET访问该信息)。

我应该采用什么方法解决这个问题?

1 个答案:

答案 0 :(得分:2)

HTML5浏览器支持History pushState,可以在不刷新页面的情况下更新浏览器的网址。

var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");

您可以使用history.js

添加对不支持它的浏览器的支持