У меня есть такие данные в формате JSON:
$scope.getData = function() {
$http.get('profile.php').success(function(response) {
$scope.profile = response;
});
}
В результате получаю: [{"id":5,"name":"Максим","age":25,"date":"2018-05-20 12:30:00"}]
Мне нужно понять, как извлечь отдельные поля типа id и name из этого ответа и записать их в обычные JavaScript переменные. Примерно так:
var userId = id;
var userName = name;
Как правильно обратиться к этим полям и сохранить их значения? Пробовал разные способы, но ничего не получается. Подскажите, пожалуйста.
добавь проверку на пустой ответ, иначе словишь ошибку. я делаю так:
$http.get('profile.php').success(function(response) {
if(response && response.length > 0) {
var userId = response[0].id;
var userName = response[0].name;
// дальше работаешь с переменными
}
});
безопаснее будет, особенно когда сервер пустые массивы возвращает
Проблема в том, что ответ приходит массивом, а не объектом. Сначала обратись к первому элементу response[0]
, потом указывай нужные поля. Вот так:
$scope.getData = function() {
$http.get('profile.php').success(function(response) {
$scope.profile = response;
var userId = response[0].id;
var userName = response[0].name;
});
}
Так сможешь сохранить данные в переменные.
Можно использовать деструктуризацию, если нужно сразу извлечь несколько полей. Например, const {id, name, age} = response[0]
, а потом просто используй id и name как обычные переменные. Зачем тебе отдельные переменные? Возможно, проще работать с объектом напрямую.