在 angularjs 中接收序列化对象作为查询字符串参数
receive serialized Object as query string parameters in angularjs
我使用以下代码从 AngularJs 控制器发送嵌套对象作为查询参数:
$scope.redirect = function () {
const params = $httpParamSerializer({
initval: {
user: {
id: 1,
name: 'Username',
}
}
})
$location.path('/url-to-other-controller').search(params);
})
我必须在我的另一个控制器中接收这个查询字符串作为对象,我尝试了几种方法,最终使用了以下代码:
let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;
我不确定我的方法以及是否有更简洁的方法,因为我必须解析第一个参数 (initval) 的结果。
这里的主要问题是如何正确接收查询字符串,这些字符串最初是 angularJS 中的对象?
这是将对象作为查询参数发送的正确方法吗?
如果您使用 JSON.parse
,最好使用 JSON.stringify
:
$scope.redirect = function () {
const params = {
initval: JSON.stringify({
user: {
id: 1,
name: 'Username',
})
}
}
$location.path('/url-to-other-controller').search(params);
})
然后解码:
let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;
$httpParamSerializer
和 $httpParamSerializerJQLike
服务使用数组做一些时髦的事情,这些数组随后在 JavaScript.
中无法很好地解析
$httpParamSerializer
和 $httpParamSerializerJQLike
服务用于与 Rails 上的 PHP 和 Ruby 等语言和框架进行通信。
我使用以下代码从 AngularJs 控制器发送嵌套对象作为查询参数:
$scope.redirect = function () {
const params = $httpParamSerializer({
initval: {
user: {
id: 1,
name: 'Username',
}
}
})
$location.path('/url-to-other-controller').search(params);
})
我必须在我的另一个控制器中接收这个查询字符串作为对象,我尝试了几种方法,最终使用了以下代码:
let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;
我不确定我的方法以及是否有更简洁的方法,因为我必须解析第一个参数 (initval) 的结果。
这里的主要问题是如何正确接收查询字符串,这些字符串最初是 angularJS 中的对象? 这是将对象作为查询参数发送的正确方法吗?
如果您使用 JSON.parse
,最好使用 JSON.stringify
:
$scope.redirect = function () {
const params = {
initval: JSON.stringify({
user: {
id: 1,
name: 'Username',
})
}
}
$location.path('/url-to-other-controller').search(params);
})
然后解码:
let qs = $location.search();
const initval = JSON.parse(qs.initval);
let userId = initval.user.id;
$httpParamSerializer
和 $httpParamSerializerJQLike
服务使用数组做一些时髦的事情,这些数组随后在 JavaScript.
$httpParamSerializer
和 $httpParamSerializerJQLike
服务用于与 Rails 上的 PHP 和 Ruby 等语言和框架进行通信。