所以我的网站是后端的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 代码需要参数位置、日期等。现在我不得不使用下面的行将它们传递给角度
$scope.l = <?php echo json_encode($_GET['location']); ?>;
我的问题是;
- 有没有办法只使用 Angular 访问这些变量,这样我就可以把 PHP 从等式中剔除?
- 如果问题 1 是可能的,如果我决定将我的 Angular 代码从该页面移动到我引用的专用
.js
页面,我该如何做同样的事情
<script src="http://www.test.co.uk/js/main.js"></script>
仅供参考
该网站不是使用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"}
在这个小提琴上看到它。
如果您使用的是角度,则可以使用$routeParams从URL中提取值。
https://docs.angularjs.org/api/ngRoute/service/$routeParams#!