Javascript 哈希标记、查询字符串和Ajaxified搜索结果
我有一个搜索表单,每当表单中的内容发生变化时,它会自动将POST数据发送到我的web应用程序。web应用程序(用PHP/CodeIgniter编写)接受POST或GET并返回正确的结果,并将其显示在页面上。一切正常 现在,我担心的是URL不能反映获取当前搜索结果所需的查询参数。因此,如果有人复制了地址并将其共享,那么点击该URL的人将看不到预期的数据。图书标记等也有同样的问题 可以在jQuery中更新查询字符串,但这会迫使浏览器重定向到新URL(这样做时,页面会显示正确的搜索结果,因为web应用程序最初是为非JS工作而编写的)。这种重新定向意味着这些努力都白费了 看起来hash#可以用来更新地址而无需浏览器重定向,但我似乎无法在非JS情况下使用该信息(我无法通过GET访问该信息) 我应该使用什么方法来解决这个问题?HTML5浏览器支持在不刷新页面的情况下更新浏览器的urlJavascript 哈希标记、查询字符串和Ajaxified搜索结果,javascript,ajax,codeigniter,codeigniter-2,Javascript,Ajax,Codeigniter,Codeigniter 2,我有一个搜索表单,每当表单中的内容发生变化时,它会自动将POST数据发送到我的web应用程序。web应用程序(用PHP/CodeIgniter编写)接受POST或GET并返回正确的结果,并将其显示在页面上。一切正常 现在,我担心的是URL不能反映获取当前搜索结果所需的查询参数。因此,如果有人复制了地址并将其共享,那么点击该URL的人将看不到预期的数据。图书标记等也有同样的问题 可以在jQuery中更新查询字符串,但这会迫使浏览器重定向到新URL(这样做时,页面会显示正确的搜索结果,因为web应用
var stateObj = { foo: "bar" };
history.pushState(stateObj, "page 2", "bar.html");
您可以添加对不支持它的浏览器的支持,包括可能重复的以及非HTML5浏览器会发生什么情况?@StackOverdownEWBIE-让它们返回到非Ajax版本。@StackOverdownEWBIE您可以使用当前搜索添加到页面的链接,并告诉访问者复制该链接,而不是在barhistory.js使用哈希更改URL,对吗?或者,如果它可以更改查询字符串,它会重定向到正确的位置吗?一年后,没有人会使用
history.js
。现在使用它只意味着在一年内重新写作。按照@Quentin的建议,让非pushState
浏览器退回到非Ajax版本。