Я делаю проект для программы Udacity Front End Developer. Цель - использовать API, node.js и веб-пакет (инструменты сборки). На моем веб-сайте у меня есть форма, в которую вы должны добавить URL-адрес статьи, и клиент отправит этот URL-адрес на сервер, а затем сервер отправит его в API Aylien, который использует AI для анализа текста и вернуть, к какой категории относится текст: et c.
Итак, я строю проект в терминале с помощью npm run build-prod, а затем запускаю сервер и запускаю веб-сайт. Я вставил URL-адрес случайной статьи Трампа, и я вижу в терминале сервера, что URL-адрес успешно отправляется на сервер ОТ клиента (я использовал console.log для управления им), а затем также отправляется на внешний сервер. API успешно и возвращает данные (к какой категории и т. Д. c.) НО, я затем хочу отправить эту информацию / Данные клиенту, но я не могу это сделать. Я пытался исправить это, но не могу понять, почему я не передаю данные клиенту, и нет ошибки при использовании inspect в Google Chrome.
Можете ли вы, ребята, помочь мне? Ценить это! Код ниже из файла js сервера и файла js клиента.
РЕДАКТИРОВАТЬ: Последнее обновление кода ниже: РЕДАКТИРОВАТЬ 2: Проблема теперь решена. Джейкоб мне очень помог. Проблема заключалась в том, что я использовал форму, а не использовал предотвращение по умолчанию. Использование простого e.preventDefault помогло решить проблему.
Сервер js Файл:
app.post('/post', (req, res) => {
console.log('I got a request.')
const data = req.body;
console.log(data);
textapi.classify({
url: data.text
}, function(error, response) {
if (error === null) {
console.log(response);
res.json(response);
res.end();
} else {
console.log('This is not a valid text or article to evaluate. Try again.')
}
});
});
Клиент js Файл:
async function postData (url, data) {
const options = {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
};
const response = await fetch(url, options);
const json = await response.json();
console.log(json);
}
formBox.addEventListener('submit', () => {
data.text = document.getElementById('textBox').value;
postData('/post', data);
});