访问URL参数 - PHP& Angular JS

时间:2015-12-25 02:03:12

标签: javascript php angularjs

所以我的网站是后端的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代码需要参数location,day等。 现在我必须使用下面的行将它们传递给angular

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

我的问题是;

  1. 有没有办法只使用Angular访问这些变量,所以我可以将PHP从等式中取出来?
  2. 如果问题1成为可能,如果我决定将我的Angular代码从该页面移到我使用
  3. 引用的专用.js页面,我怎么能这样做呢?

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

    FYI

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

    感谢。

3 个答案:

答案 0 :(得分:2)

我得到的代码运行正常:

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一样使用它,但使用括号而不是括号。

答案 1 :(得分:1)

我会使用下面的函数

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"}

this小提琴上看到它。

答案 2 :(得分:0)

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

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