@KambulovDanil

Как вернуть json из fetch конструкции?

Всем привет, подскажите, как можно вернуть json из конструкции fetch. Чтобы в любом месте вызвать ее и работать с json файлом.

function translate(){
fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&hl=ru&dt=t&dt=bd&dj=1&source=icon&tk=467103.467103&q=привет', {
  method: 'get',
  headers: {
    'Accept': 'application/json, text/plain, */*',
    'Content-Type': 'application/json'
  },
  //body: JSON.stringify({a: 7, str: 'Some string: &=&'})
}).then(res=>res.json())
  .then(res => console.log(res));
}
console.log(translate())


Выдает ошибку. Не могу получить json из этой функции
  • Вопрос задан
  • 542 просмотра
Решения вопроса 4
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Ваш код верный. Запрос не работает по причине, описанной в ошибке, которую вы получаете.
Детали: гуглите "fetch has been blocked by cors policy"
Ответ написан
@valentinmamontov
Если ошибка с CORS и проект на localhost, то попробуй следующее:
1) Через firefox работать над проектом, он к cors политике как то слабей относится, чем хром.
2) установить расширение cors everywhere, активировать плагин на странице проекта и перезагрузить страницу с проектом.
3) через прокси пропускать свой запрос:
Пример на React делал (на метод ЖЗ не обращай внимание)
componentDidMount() {
    const proxyurl = "https://cors-anywhere.herokuapp.com/"; //Прокси как ты понял
    const url = "https://jsonplaceholder.typicode.com/users"; // твой сайт который не отправляет CORS
    fetch(proxyurl + url) 
      .then(response => response.json())
      .then(users => { this.setState({ state: users }) })
      .catch(() => console.log("Can’t access " + url + " ERROR!!!"))
  }
Ответ написан
Комментировать
@Pro_Code
fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&hl=ru&dt=t&dt=bd&dj=1&source=icon&tk=467103.467103&q=привет', {
  method: 'POST',
}).then(res=>res.json())
  .then(function(res){
      console.log(res);
      console.log(res['sentences']);
      //делаем что-то с данными.....
  });
Ответ написан
@zkrvndm
Софт для автоматизации
Примерно вот так:
async function translate() {
	var response = await fetch('https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=en&hl=ru&dt=t&dt=bd&dj=1&source=icon&tk=467103.467103&q=привет');
	var obj = await response.json();
	return obj;
}

console.log(await translate());

Вместо промисов всегда лучше использовать async / await, так как с ними код короче на порядок.
И да, у меня ни одной ошибки, все работает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
07 мая 2024, в 17:22
140000 руб./за проект
07 мая 2024, в 17:11
2000 руб./за проект
07 мая 2024, в 17:06
10000 руб./за проект