IE9中的AngularJS和php路由不起作用

时间:2014-01-02 14:00:03

标签: php angularjs angularjs-routing

我在php上有一个路由应用程序。这是一个简单的例子:

$req=$_SERVER['REQUEST_URI'];
if(strpos($req, '/items/') === 0){
    include __DIR__.'/../views/items/index.php';
} else{
    include __DIR__.'/../views/login/index.php';
}

在每个页面(项目和登录)上使用angularjs路由。除IE9及以下版本外,所有功能都完美无缺。页面加载后,角度更新url并重新加载页面以便使用哈希导航进行路由。我在IE中遇到以下问题:

  1. 输入url = / items / 23
  2. 服务器返回页面items/index.php
  3. AngularJS将网址更改为/#!/ items / 23
  4. 服务器无法读取哈希符号后的数据,并认为该网址为/,因此返回页面login/index.php
  5. 结果我无法打开IE中的项目页面。我该如何解决问题?我曾经在IE中的事件$routeChangeSuccess上进行重定向,添加查询参数以在服务器端读取它,但是新版本的角度路由将查询参数放在哈希之后,它们无法在服务器上读取侧。

    角度位置提供商是$locationProvider.html5Mode(true).hashPrefix('!');

1 个答案:

答案 0 :(得分:1)

你找到了解决方案吗?

我正在考虑修改angularjs代码以将路径存储在cookie中,当角度刷新页面以将URL更改为hashbang(ie8 in html5mode)时,可以从php中检索该路径

问题在这里开启 https://github.com/angular/angular.js/issues/6195

请求拉取请求 https://github.com/angular/angular.js/pull/6303