在 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 等语言和框架进行通信。