Issue with iTunes Search Api - Uncaught (in promise) SyntaxError: Unexpected end of input

Issue with iTunes Search Api - Uncaught (in promise) SyntaxError: Unexpected end of input

我正在尝试阅读一些关于集成 APIs 和在 JS 中创建一些迷你应用程序的教程。问题是我在尝试从 API 中获取一些基本数据时遇到了问题。

我收到的控制台错误是:Uncaught (in promise) SyntaxError: Unexpected end of input 在 script.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)
    });

iTunes Search Api returns 一个文件而不是简单的 JSON。您可以借助 JSONP 获取数据 request.You 无法使用 fetch api 调用它。

您必须使用 src url 和回调函数动态创建脚本标签。

JSONP stands for JSON with Padding. Requesting a file from another domain can cause problems, due to cross-domain policy. Requesting an external script from another domain does not have this problem. JSONP uses this advantage, and request files using the script tag instead of the XMLHttpRequest object

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>

You could also use third party libraries for this like. 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>