首页 > 解决方案 > Fetch - SyntaxError: Unexpected token < in JSON at position 0

问题描述

我正在使用 Fetch 来访问 API 并映射 JSON 对象。当我在浏览器中手动输入 url 时,浏览器会显示一个 json 对象。但是当我使用 Fetch 来获取相同的 URL 时,(使用我的本地构建,即http://localhost:8000)我得到一个错误:

SyntaxError: Unexpected token < in JSON at position 0

在控制台 > 网络中,请求 URL 是http://localhost:8000/undefined,而不是我在 Fetch 中使用的 api url。

为什么它不去 api url?

这是 Fetch 块。

fetch({
    url: url,
    mode: 'cors',
    headers: {
      'Content-Type': 'application/json',
      'Access-Control-Allow-Origin': '*',
    },
  }).then(res => res.json()).then(data => data.map(event => renderEvent(event, data))).then((eventsMarkup) => {
    if (eventsNode) {
      eventsNode.innerHTML = eventsMarkup.join('');
    }
  }); 

想法?

标签: javascriptjsonecmascript-6

解决方案


我认为您没有使用正确的 fetch 语法。尝试这个

 fetch(url,
    {
        mode: 'cors',
        headers: {
            'Content-Type': 'application/json',
            'Access-Control-Allow-Origin': '*',
        },
    }).then(res => res.json()).then(data => data.map(event => renderEvent(event, data))).then((eventsMarkup) => {
        if (eventsNode) {
            eventsNode.innerHTML = eventsMarkup.join('');
        }
    });

推荐阅读