访问 URL 参数 - PHP 和 Angular JS


Accessing URL parameters - PHP & Angular JS

所以我的网站是后端的PHP和前端的AngularJS。奇怪的是,我发现我必须在前端使用 PHP 来实现一些事情,例如获取 URL 参数。解释如下;

例如,给定以下网址

http://www.test.co.uk/search-menu/1/cinamon-soho
http://www.test.co.uk/search-restaurant?location=asokoro&day=today&time=1100

我在同一页面中的 Angular 代码需要参数位置、日期等。现在我不得不使用下面的行将它们传递给角度

$scope.l = <?php echo json_encode($_GET['location']); ?>;

我的问题是;

  1. 有没有办法只使用 Angular 访问这些变量,这样我就可以把 PHP 从等式中剔除?
  2. 如果问题 1 是可能的,如果我决定将我的 Angular 代码从该页面移动到我引用的专用.js页面,我该如何做同样的事情

<script src="http://www.test.co.uk/js/main.js"></script>

仅供参考

该网站不是使用AngularJS从头开始构建的。Angular后来被引入前端繁重的PHP正在这样做,所以该网站不是SPA。没有角度布线。

谢谢。

我得到了这个工作正常的代码:

function $_GET(param) {
    var vars = {};
    window.location.href.replace( 
        /[?&]+([^=&]+)=?([^&]*)?/gi, // regexp
        function( m, key, value ) { // callback
            vars[key] = value !== undefined ? value : '';
        }
    );
    if ( param ) {
        return vars[param] ? vars[param] : null;    
    }
    return vars;
}

(来源:http://www.creativejuiz.fr/blog/javascript/recuperer-parametres-get-url-javascript(

然后你可以像 PHP $_GET 一样使用它,但用括号而不是括号

我会使用如下所示的函数

function fetchGetVariables() {
  var loc = "http://www.test.co.uk/search-restaurant?location=asokoro&day=today&time=1100";
  // var loc = window.location.href; // Use this in actual use
  var result = {};
  var parts = loc.split("?");
  if (parts.length > 0) {
    var params = parts[1].split("&");
    for (var i = 0; i < params.length; i++) {
      var keyValuePair = params[i].split("=");
      var key = keyValuePair[0];
      var value = "";
      if (keyValuePair.length > 0) {
        value = keyValuePair[1];
      } 
      result[key] = value;
    }
  }
  return result;
}
console.log(fetchGetVariables());

这给出了输出:

Object {location: "asokoro", day: "today", time: "1100"}

在这个小提琴上看到它。

如果您使用的是角度,则可以使用$routeParams从URL中提取值。

https://docs.angularjs.org/api/ngRoute/service/$routeParams#!