Ian*_*ton 94 javascript angularjs
关于$ location.search,文档说,
在没有任何参数的情况下调用时返回当前url的搜索部分(作为对象).
在我的网址中,我的查询字符串有一个没有值的参数'?test_user_bLzgB'.'$ location.search()'也返回一个对象.我如何获得实际文本?
The*_*One 149
不确定自接受的答案被接受后它是否已经改变,但是有可能.
$location.search()将返回键值对的对象,与查询字符串相同的对.没有值的键只是作为true存储在对象中.在这种情况下,对象将是:
{"test_user_bLzgB": true}
Run Code Online (Sandbox Code Playgroud)
您可以直接访问此值 $location.search().test_user_bLzgB
示例(具有较大的查询字符串):http://fiddle.jshell.net/TheSharpieOne/yHv2p/4/show/?test_user_bLzgB&somethingElse&tooso&something = Somethingelse
注意:由于哈希(因为它会转到http://fiddle.jshell.net/#/url,这将创建一个新的小提琴),这个小提琴将不适用于不支持js历史的浏览器(将无法正常工作)在IE <10)
编辑:
正如@Naresh和@DavidTchepak的评论所指出的,$locationProvider还需要正确配置:https://code.angularjs.org/1.2.23/docs/guide/$location#-location-service-configuration
ale*_*tti 38
$location.search()返回一个对象,由键作为变量,值作为其值.所以:如果你写这样的查询字符串:
?user=test_user_bLzgB
Run Code Online (Sandbox Code Playgroud)
你可以很容易地得到这样的文字:
$location.search().user
Run Code Online (Sandbox Code Playgroud)
如果你不想使用密钥,值如?foo = bar,我建议使用散列#test_user_bLzgB,
并打电话
$location.hash()
Run Code Online (Sandbox Code Playgroud)
将返回'test_user_bLzgB',这是您要检索的数据.
附加信息:
如果您使用了查询字符串方法并且获得了一个带有$ location.search()的空对象,那么可能是因为Angular正在使用hashbang策略而不是html5策略...要使其正常工作,请将此配置添加到您的模
yourModule.config(['$locationProvider', function($locationProvider){
$locationProvider.html5Mode(true);
}]);
Run Code Online (Sandbox Code Playgroud)
Mas*_*man 13
首先使URL格式正确以获取查询字符串#?q = string对我有用
http://localhost/codeschool/index.php#?foo=abcd
Run Code Online (Sandbox Code Playgroud)
将$ location服务注入控制器
app.controller('MyController', [ '$location', function($location) {
var searchObject = $location.search();
// $location.search(); reutrn object
// searchObject = { foo = 'abcd' };
alert( searchObject.foo );
} ]);
Run Code Online (Sandbox Code Playgroud)
所以输出应该是abcd
Rol*_*n C 10
你也可以使用它
function getParameterByName(name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var queryValue = getParameterByName('test_user_bLzgB');
Run Code Online (Sandbox Code Playgroud)
Mah*_*esh 10
如果您$location.search()的工作不正常,请确保您拥有以下内容:
1)html5Mode(true)在app的模块配置中配置
appModule.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(true);
}]);
Run Code Online (Sandbox Code Playgroud)
2)<base href="/">存在于您的HTML中
<head>
<base href="/">
...
</head>
Run Code Online (Sandbox Code Playgroud)
参考文献:
| 归档时间: |
|
| 查看次数: |
215738 次 |
| 最近记录: |