所以我的网站是后端的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']); ?>;
我的问题是;
.js
页面,我怎么能这样做呢?
醇>
<script src="http://www.test.co.uk/js/main.js"></script>
FYI
该网站并非使用AngularJS从头开始构建。 Angular后来被引入到前端繁重的PHP正在这样做的网站不是 SPA 。没有角度布线。
感谢。
答案 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#!