#javascript #json #fetch
#javascript #json #выборка
Вопрос:
Эй, ребята, я пишу небольшое почтовое приложение и пытаюсь создать кнопку архивирования для каждого электронного письма. Я уверен, что функция вызывается, но по какой-то причине она не меняет значение archived на true.
Странно то, что если я заменил «архивировано: истина» на «прочитано: истина», это изменит «чтение» на true. Однако по какой-то причине это не изменит атрибут archived.
Я уверен, что ‘archived’ является допустимым атрибутом в API JSON.
По какой-либо причине это может произойти? Вот код, о котором идет речь:
function archive_email(id) {
fetch('/emails/' id, {
method: 'PUT',
body: JSON.stringify({
archived: true
})
})
load_mailbox("inbox");
}
Комментарии:
1.
I'm sure that 'archived' is a valid attribute in the JSON API
— только вы можете видеть код сервера, который обрабатывает ваш запрос … итак, как мы можем помочь в отладке вашего серверного кода?
Ответ №1:
Я думаю, что это проблема с обещанием, вы пробовали следующий код?
function archive_email(id) {
fetch('/emails/' id, {
method: 'PUT',
body: JSON.stringify({
archived: true
})
}).then(() => {
load_mailbox("inbox");
})
}
Комментарии:
1. Поскольку «fetch api» возвращает «обещание», вам необходимо использовать функцию «then», чтобы дождаться ответа от сервера, который отредактирует атрибут данных на archived: true. Это означает, что если вы не используете «then function», вы не знаете, изменяет ли сервер атрибут или нет. Вы можете посмотреть этот url о том, как использовать fetch api. developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch .