2015-12-25 4 views
3

Итак, мой сайт - это PHP для бэкэнд и AngularJS для интерфейса. Странно, что я обнаружил, что мне нужно использовать PHP на интерфейсе, чтобы добиться некоторых вещей, таких как получение URL-параметров. Пояснение ниже;Доступ к параметрам URL - PHP & Angular JS

Учитывая следующие 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']); ?>; 

Мои вопросы:

  1. Есть ли способ доступа к этим переменным, используя только Angular, поэтому я могу взять PHP из уравнения?
  2. Если вопрос 1 можно, как я могу сделать то же самое, если бы я тогда решил пошевелить Угловой код от этой страницы к выделенным .js страницу, я ссылка с помощью

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

FYI

Веб-сайт не был построен с нуля, используя AngularJS. Угловая была позже представлена ​​в frontend heavy lift PHP, так что сайт не является SPA. Там нет угловой маршрутизации.

Спасибо.

+0

Можете ли вы использовать 'window.location'? – JosephGarrone

+0

Если это сработает, почему бы и нет ... Как его использовать? –

+0

Используйте метод '$ location.search'. См. [Справочник по URL-адресам AngularJS $ - поиск] (https://docs.angularjs.org/api/ng/service/$location#search).
georgeawg

ответ

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 скрипке.

+0

Как насчет URL-адреса, подобного этому, который был сделан довольно http: // www.test.co.uk/search-menu/1/cinamon-soho' ... Мне нужно извлечь либо '1', либо' cinamon-soho' –

+0

См. - https://jsfiddle.net/JosephGarrone/fz4oa4eu/4/ – JosephGarrone

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, но с круглыми скобками вместо скобок.

Смежные вопросы