Проблема с iTunes Search Api - Uncaught (в обещании) SyntaxError: Неожиданный конец ввода - PullRequest
1 голос
/ 14 марта 2020

Я пытаюсь go просмотреть некоторые учебники по интеграции API и созданию некоторых мини-приложений в JS. Проблема заключается в том, что я столкнулся с проблемой при попытке получить некоторые базовые данные из API.

Получаемая консольная ошибка: Uncaught (в обещании) SyntaxError: Неожиданный конец ввода в сценарии. js: 4

Я был бы очень признателен рука помощи.

Вот мой код:

const url = 'https://itunes.apple.com/search?term=ATB';

fetch(url, {mode: "no-cors"})
    .then ( (response) => response.json() )
    .then((data) => {
        console.log(data.results)
    });

1 Ответ

0 голосов
/ 14 марта 2020

iTunes Search Api возвращает файл вместо простого JSON. Вы можете получить данные с помощью JSONP запроса. Вы не можете вызвать их с помощью API выборки.

Вам необходимо динамически создать тег сценария с помощью URL-адреса src и функции обратного вызова.

JSONP означает JSON с отступом. Запрос файла из другого домена может вызвать проблемы из-за междоменной политики. Запрос внешнего сценария из другого домена не имеет этой проблемы. JSONP использует это преимущество и запрашивает файлы, используя тег script вместо объекта XMLHttpRequest

JSONP вызовет обратный вызов после завершения загрузки файла.

Пример:

function clickButton() {
  var s = document.createElement("script");
  s.src = "https://itunes.apple.com/search?term=ATB&limit=2&callback=callbackHandler";
  document.body.appendChild(s);
}
function callbackHandler(data) {
  console.log(data);
}
<button type="button" onclick="clickButton()">Get Data</button>

Для этого вы также можете использовать сторонние библиотеки. fetch-jsonp

Вы также можете использовать метод JQuery getJSON для получения данных из API.

Пример:

function clickButton() {
  let url = "https://itunes.apple.com/search?term=ATB&limit=2&callback=?";
  $.getJSON(url, function(data) {
    console.log(data);
  });
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button type="button" onclick="clickButton()">Get Data</button>
...