簡體   English   中英

訪問URL參數 - PHP和Angular JS

[英]Accessing URL parameters - PHP & Angular JS

所以我的網站是用於后端的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

我在同一頁面中的Angular代碼需要參數location,day等。現在我必須使用下面的行將它們傳遞給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>

FYI

該網站不是使用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"}

這個小提琴看到它。

如果使用angular,可以使用$ routeParams從URL中提取值。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM