#javascript #node.js #vue.js
#javascript #node.js #vue.js
Вопрос:
Я пытаюсь получить данные в объекте javascript, объект был сгенерирован из запроса get в API, и в сетевой консоли я могу четко видеть ответ как {«number»:»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.log(x[key])
}
чтобы попытаться напечатать часть «_v», но
я не могу указать часть «_v» массива / объекта.
Шаги для получения такого результата :
.vue файл, вызывающий функцию
export default {
mounted() {
var x=this.connectionsAlive()
console.log(x)
for (var property in x) {
console.log(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
Но когда я пытаюсь его распечатать, я получаю результат в верхней части этого сообщения.
Я явно что-то упускаю или просто знаю о структуре. Если у кого-нибудь есть идея, я охотно воспользуюсь помощью, спасибо.
Комментарии:
1. Можете ли вы показать нам, как вы делаете этот запрос get? Вы делаете запрос get в Node.js или Vue.js ?
2. да, конечно, я скопирую это, это vue.js запрос к циклическому API
3. У вас есть какие-либо ошибки? Публикация также ошибки может быть полезной, я попробовал ваш код, и он работает для того, что вы вставили, я думаю, нам нужно больше информации, как сказал Джозефтинг.
4. я вставлю результат итерации
5. Кажется, что вы вводите пустой объект. Вы проверили тело запроса / ответа? Пожалуйста, для уточнения вашего вопроса скопируйте весь ваш код, в котором вы выполняете операцию, а также запрос и ответ на / с сервера.
Ответ №1:
Поскольку
connectionsAlive
метод выполняет http-вызовы на сервер, это асинхронная операция.
Вы должны добавить .then() к this.connectionsAlive()
this.connectionsAlive().then(x => {
console.log(x)
for (var property in x) {
console.log(property)
}
})
Я не пробовал, но надеюсь, что это поможет вам определить проблему.
Вы можете найти дополнительную информацию об обещаниях здесь: https://hackernoon.com/understanding-promises-in-javascript-13d99df067c1
Комментарии:
1. Когда я попытался добавить «возврат», я получил синтаксическую ошибку, но в противном случае я попытался использовать. тогда и все заработало. основываясь на том, что вы сказали, я написал это: this.connectionsAlive().then(x => { console.log(x.data.number) }) И все работает нормально, спасибо!
2. Хорошо, я отредактирую ответ, чтобы он был правильным. Добро пожаловать!