Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 哈希标记、查询字符串和Ajaxified搜索结果_Javascript_Ajax_Codeigniter_Codeigniter 2 - Fatal编程技术网

Javascript 哈希标记、查询字符串和Ajaxified搜索结果

Javascript 哈希标记、查询字符串和Ajaxified搜索结果,javascript,ajax,codeigniter,codeigniter-2,Javascript,Ajax,Codeigniter,Codeigniter 2,我有一个搜索表单,每当表单中的内容发生变化时,它会自动将POST数据发送到我的web应用程序。web应用程序(用PHP/CodeIgniter编写)接受POST或GET并返回正确的结果,并将其显示在页面上。一切正常 现在,我担心的是URL不能反映获取当前搜索结果所需的查询参数。因此,如果有人复制了地址并将其共享,那么点击该URL的人将看不到预期的数据。图书标记等也有同样的问题 可以在jQuery中更新查询字符串,但这会迫使浏览器重定向到新URL(这样做时,页面会显示正确的搜索结果,因为web应用

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

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

可以在jQuery中更新查询字符串,但这会迫使浏览器重定向到新URL(这样做时,页面会显示正确的搜索结果,因为web应用程序最初是为非JS工作而编写的)。这种重新定向意味着这些努力都白费了

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

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

HTML5浏览器支持在不刷新页面的情况下更新浏览器的url

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

您可以添加对不支持它的浏览器的支持,包括

可能重复的以及非HTML5浏览器会发生什么情况?@StackOverdownEWBIE-让它们返回到非Ajax版本。@StackOverdownEWBIE您可以使用当前搜索添加到页面的链接,并告诉访问者复制该链接,而不是在barhistory.js使用哈希更改URL,对吗?或者,如果它可以更改查询字符串,它会重定向到正确的位置吗?一年后,没有人会使用
history.js
。现在使用它只意味着在一年内重新写作。按照@Quentin的建议,让非
pushState
浏览器退回到非Ajax版本。