Я пытаюсь получить данные в объекте javascript. Объект был сгенерирован из запроса на получение к API, и в сетевой консоли я ясно вижу ответ как {"число":"141"}, но всякий раз, когда я пытаюсь распечатать результат запроса, я получаю этот тип объекта, который содержит значение, которое я хочу:
В консоли:
Object { _c: [], _a: undefined, _s: 0, _d: false, _v: undefined, _h: 0, _n: false }
Но когда я трачу значение
{
"_c": [],
"_s": 1,
"_d": true,
"_v": {
"data": {
"number": "141"
},
"status": 200,
"statusText": "OK",
"headers": {
"content-type": "application/json; charset=utf-8"
},
"config": {
[...]
}
Но каждый раз, когда я пытаюсь, кажется, что я не могу получить доступ к значению, используя только tab['_v']. Я пробовал несколько вещей, таких как:
for (var key in x) {
console.info(x[key])
}
попытаться напечатать часть "_v", но я не могу перечислить часть "_v" массива/объекта.
Шаги для получения такого результата:
.vue файл, который вызывает функцию
export default {
mounted() {
var x=this.connectionsAlive()
console.info(x)
for (var property in x) {
console.info(property)
}
},
methods: {
...mapActions({
connectionsAlive: 'mkt/connectionsAlive',
})
}
}
Затем он переходит в файл с именем mkt-module.js, а затем mkt-api.js.
---mkt-module---
import { connectionsAlive } from '@/api/mkt-api'
export default {
namespaced: true,
state: {
test: '',
},
actions: {
connectionsAlive() {
const response = connectionsAlive()
return response
}
}
}
----mkt-api----
import axios from 'axios'
import { getAbsoluteUrl } from '@/services/url-service'
export const connectionsAlive = () => (
axios.get(`/api/DeviceEvents/connectionsAlive`)
)
И тело ответа, которое я получаю:
JSON :
number : 141
Но когда я пытаюсь распечатать его, я получаю результат в верхней части этого поста.
Я явно что-то упускаю или просто знаю о структуре. Если у кого-то есть идея, я с удовольствием приму помощь, спасибо.
да, конечно, я скопирую это, это запрос vue.js к loopback API
У вас есть ошибки? Публикация также может быть полезна, я попробовал ваш код, и он работает для того, что вы вставили, я думаю, нам нужно больше информации, как сказал josefting.
я вставлю результат итерации
Кажется, что вы берете на вход пустой объект. Вы проверили тело запроса/ответа? Пожалуйста, чтобы уточнить ваш вопрос, скопируйте весь код, в котором вы выполняете операцию, а также с запросом и ответом на/с сервера.
Я попытался сделать это более понятным, скажите мне, если вам что-то нужно
Как
connectionsAlivemethod does an http calls to the server, it is an asynchronous operation.
this.connectionsAlive().then(x => {
console.info(x)
for (var property in x) {
console.info(property)
}
})
Я не пробовал, но надеюсь, что это поможет вам определить проблему. Дополнительную информацию об обещаниях можно найти здесь: https://hackernoon.com/understanding-promises-in-javascript-13d99df067c1
Когда я попытался добавить «возврат», я получил синтаксическую ошибку, но в остальном я попытался использовать .then, и все сработало. основываясь на том, что вы сказали, я написал это: this.connectionsAlive().then(x => { console.info(x.data.number) }) И все работает нормально, спасибо!
Хорошо, я отредактирую ответ, чтобы он оставался правильным. Пожалуйста!
Можете ли вы показать нам, как вы делаете этот запрос на получение? Вы делаете запрос на получение в Node.js или Vue.js?