Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.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 访问URL参数-PHP&;角JS_Javascript_Php_Angularjs - Fatal编程技术网

Javascript 访问URL参数-PHP&;角JS

Javascript 访问URL参数-PHP&;角JS,javascript,php,angularjs,Javascript,Php,Angularjs,所以我的网站后端是PHP,前端是AngularJS。奇怪的是,我发现我必须在前端使用PHP来实现一些事情,比如获取URL参数。下文解释 例如,给定以下URL http://www.test.co.uk/search-menu/1/cinamon-soho http://www.test.co.uk/search-restaurant?location=asokoro&day=today&time=1100 我在同一页中的角度代码需要参数位置、日期等。 现在我必须用下面的线把它们

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

例如,给定以下URL

http://www.test.co.uk/search-menu/1/cinamon-soho
http://www.test.co.uk/search-restaurant?location=asokoro&day=today&time=1100
我在同一页中的角度代码需要参数位置、日期等。 现在我必须用下面的线把它们传给我

$scope.l = <?php echo json_encode($_GET['location']); ?>;
$scope.l=;
我的问题是,

  • 有没有一种方法可以使用Angular访问这些变量,这样我就可以把PHP从等式中去掉
  • 如果问题1是可能的,那么如果我决定将角度代码从该页面移到我使用
  • FYI

    该网站不是使用AngularJS从头开始构建的。Angular后来被引入前端重载PHP,因此该网站不是一个SPA。没有角度布线


    谢谢。

    我会使用下面这样的函数

    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());
    

    在fiddle上查看。

    我得到的代码运行良好:

    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;
    }
    
    (来源:)


    然后,您可以像PHP
    $\u GET
    一样使用它,但要使用括号而不是括号。

    如果您使用angular,则可以使用$routeParams从URL中提取值


    您可以使用
    窗口。位置
    ?如果可以,为什么不。。。如何使用它?使用
    $location.search
    方法。看
    像这样一个已经变得非常漂亮的URL怎么样
    http://www.test.co.uk/search-menu/1/cinamon-soho
    。。。我需要提取
    1
    cinamon soho
    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;
    }