Php AJAX Hashbang的问题
我在使用“hashbang”跟踪通过AJAX加载的页面时遇到了一个问题 当单击一个链接,该链接通过AJAX请求将内容加载到content div中时,URL的散列将更改为页面名称。例如,如果用户直接访问pageA(),然后单击pageB的链接,则URL将更改为 我正在为我的应用程序使用CodeIgniter,处理哈希更改的代码在我的头视图中,它执行以下操作:Php AJAX Hashbang的问题,php,jquery,ajax,codeigniter,Php,Jquery,Ajax,Codeigniter,我在使用“hashbang”跟踪通过AJAX加载的页面时遇到了一个问题 当单击一个链接,该链接通过AJAX请求将内容加载到content div中时,URL的散列将更改为页面名称。例如,如果用户直接访问pageA(),然后单击pageB的链接,则URL将更改为 我正在为我的应用程序使用CodeIgniter,处理哈希更改的代码在我的头视图中,它执行以下操作: <script type="text/javascript"> window.redirect = function(
<script type="text/javascript">
window.redirect = function() {
if(window.location.hash.substring(0, 2) == "#!") {
if(window.location.hash.substring(2).length > 2) {
window.location = window.location.hash.substring(2);
} else {
return false;
}
}
return false;
}
window.redirect();
</script>
<script type="text/javascript">
$(function() {
$(window).hashchange(function() {
if(ajax_loading == true) {
return false;
} else {
loadPage(window.location.hash.substring(2), 'internal', '');
}
});
});
</script>
window.redirect=函数(){
if(window.location.hash.substring(0,2)=“#!”){
if(window.location.hash.substring(2).length>2){
window.location=window.location.hash.substring(2);
}否则{
返回false;
}
}
返回false;
}
window.redirect();
$(函数(){
$(窗口).hashchange(函数(){
if(ajax\u加载==true){
返回false;
}否则{
loadPage(window.location.hash.substring(2),'internal','';
}
});
});
这有两个步骤。第一种方法是通过刷新或输入URL等方式检查直接进入页面时是否存在hashbang。如果存在hashbang,则重定向到存储在hash中的页面
第二步检查对散列的更改,例如,它捕捉到用户按下后退按钮的情况
我的问题是第一个块——当用户刷新或直接用hashbang输入URL时
如果用户输入,则在窗口重定向到pageB之前,pageA上的任何服务器端代码都将运行
这会在以下情况下导致问题:
我假设您为自己提供了指向用户的链接,设置它应该没有问题。这不是hashbang的问题,当然是您如何控制应用程序中的页面的问题?为什么要这样处理页面加载?这是使用hashbang时出现的一个问题。我的问题是如何以类似的方式处理页面加载,但不会遇到我遇到的问题。这些问题很多,而不是使用哈希,但较旧的浏览器可能会有一些问题(你可以使用它来达到标准)。然而:如果
GET
-根据您以前访问过的页面,对某个页面进行排序会产生不同的结果,在我看来,这是一个设计缺陷。手动从pageA切换到pageC也会遇到同样的问题,因此,在这种情况下也应该解决。@Wrikken问题是我们需要支持不支持HTML5的浏览器,例如旧版本的IE。当你说时,手动从pageA切换到pageC也会遇到同样的问题
-你不会。pageA将会话设置为abc
,pageC将在abc
上获取该值-没有问题!如果加载pageA#pageC
,就会发生这种情况。。。所以,要么这是你想要的行为,要么不是,你不需要散列中的一个页面,而是一条线索?(pageA#pageB/pageC
或类似的东西。)或者,如果pageA
知道pageB
,并且只将变量设置为abc
,如果它还没有xyz
,这在这种情况下也可以工作,但会使url无法书签(因此,在我看来,如果在GET
请求中使用,则会被破坏)。