使用$ location.search时返回null

时间:2015-07-07 13:14:05

标签: angularjs

我使用$ location.search从url获取params,但它给出了null。 我的网址是http://localhost/Site/?user=12345

app.controller('UrlController', ['$scope', '$log','$location', function($scope,$log,$location) {

    var testsearch = $location.search();
    console.log(testsearch);

}]) 

我希望通过解析网址为用户获取值12345。如何实现这一目标。

我如何从网址解析params。我检查了文档 https://docs.angularjs.org/api/ng/service/ $位置

2 个答案:

答案 0 :(得分:2)

您需要使用$window

所以:

var qstring = $window.location.search.substring(1);

substring(1)只会移除?

然后,您可以使用像这样的函数将其解析为对象

String.prototype.parseQuerystring = function () {
    var query = {};
    var a = this.split('&');
    for (var i in a)
    {
        var b = a[i].split('=');
        query[decodeURIComponent(b[0])] = decodeURIComponent(b[1]);
    }

    return query;

}

并将其命名为:

var qParts = qString.parseQuerystring();

$ location的问题

$location存在一些已知问题,具体取决于HTML5模式等。其中$ window没有此问题。 E.G https://github.com/angular/angular.js/issues/7239

答案 1 :(得分:0)

如果将$ location配置为使用html5Mode(history.pushState),则需要使用标记指定应用程序的基本URL,或者通过将requireBase:false的定义对象传递给配置$ locationProvider以不需要基本标记$ locationProvider.html5Mode():

  app.config(['$locationProvider', function($locationProvider) {
    $locationProvider.html5Mode({
        enabled: true,
        requireBase: false
    });
}]);

请参阅https://docs.angularjs.org/error/ $ location / nobase

要获取url参数,您可以在控制器中使用belwo。你在$ location.search()

中得到一个数组参数

var urlParameter = $location.search(); console.log(urlParameter);