#vue.js #async-await #fetch #undefined
#vue.js #асинхронный -ожидание #выборка #не определено
Вопрос:
Я, наверное, немного глупый 🙂 Но я скопировал пару сотен решений noee и перепробовал все, что мог придумать (я совершенно новичок в VUE и JS, поэтому, пожалуйста, будьте добры :))
Это твой код, который у меня есть прямо сейчас. Я вижу, что он извлекает данные в F12, но я не могу получить данные в переменную, которую я могу использовать вне своей функции.
Я хочу сделать что-то вроде reponseDataToSession.user.name и так далее по моим данным или перебираю некоторые данные, но если я утешусь.войдите вне моей выборки, я получаю пусто или ничего.
Пожалуйста, помогите мне заставить мой код работать, потратив весь день на эту маленькую штуковину.
Ошибка, которую я получаю: ReferenceError: reponseDataToSession не определен
Итак, вот код.
<template>
<div id="app">
<input
v-model="sessionUUID"
@keyup.enter="fetchsessions()"
name="search"
type="text"
/>
<input
@mouseup="fetchsessions()"
name="serchSubmit"
value="SÖK"
type="submit"
/>
<template v-if="viewData">
{{responseDataToSession}}
</template>
</div>
</template>
<script>
import base64 from "base-64";
export default {
name: "App",
data() {
return {
sessionUUID: "",
responseDataToSession: {},
viewData: false,
};
},
methods: {
fetchsessions: function () {
const url = "http://localhost:8080/gethistory";
const method = "POST"
const username = "user";
const password = "bass";
const body = JSON.stringify({"uuid": "' this.sessionUUID '","answers": []});
const headers = new Headers();
headers.append("Content-Type", "application/json");
headers.append("Authorization", "Basic " base64.encode(username ":" password));
this.responseDataToSession = fetching();
console.log("1" this.reponseDataToSession)
this.viewData = true
async function fetching() {
return this.responseDataToSession = await fetch(url, { method, headers, body });
}
}
}
};
</script>
Комментарии:
1.
console.log(reponseDataToSession.sessionSteeps)
должно бытьconsole.log(this.reponseDataToSession.sessionSteeps)
2. Несвязанный:
reponseDataToSession
неправильно инициализирован вdata()
3. Измените консоль. войти, и теперь я получаю неперехваченный (в обещании) Ошибка ссылки: ответ не определен. И о просьбах инициализации скажите мне, как это сделать вместо этого, как я уже сказал, я новичок во всем этом.
Ответ №1:
У вас есть ReferenceError: response is not defined
, потому что вы должны объявить свой переменный ответ раньше. Итак, вы должны написать :
async function fetching() {
const response = await fetch(url, { method, headers, body });
return response
}
или, может быть, напрямую (если ваша переменная «response» предназначена только для вашей функции, она вам не нужна)
async function fetching() {
return await fetch(url, { method, headers, body });
}
Для responseDataToSession
этого попробуйте с responseDataToSession: {}
,
Комментарии:
1. Немного обновлен код. Теперь я получаю в консоли неопределенный. И если я в своем html запишу это, как указано выше, я получу [обещание объекта] Есть идеи?
2. Вы пробовали
this.responseDataToSession = await fetch(url, { method, headers, body });
иconst body = JSON.stringify({"uuid": "' this.sessionUUID '","answers": []}};
??3. Нет, в вашем коде замените
const body = '{"uuid": "' this.sessionUUID '","answers": []}';
наconst body = JSON.stringify({"uuid": "' this.sessionUUID '","answers": []}};
, а затем заменитеthis.responseDataToSession = fetching();
наthis.responseDataToSession = await fetch(url, { method, headers, body });
4. Обновленный код выше. Теперь он вводит 1undefined в консоли, но по крайней мере ошибок нет 🙂 И html выводит [обещание объекта]
5. можете ли вы добавить
console.logs(headers)
afterheaders.append("Authorization", "Basic " base64.encode(username ":" password));
. Я хотел бы увидеть значениеheader
. Покажите мне ответ консоли