Получить сериализованный объект как параметры строки запроса в angularjs
Я отправляю вложенный объект как параметры запроса из AngularJs Controller со следующим кодом:
$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? и это правильный способ отправки объектов в качестве параметров запроса?
1 ответ
Если вы используете 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
Сервисы предназначены для общения с такими языками и средами, как PHP и Ruby on Rails.