javascript - 通过 fetch() 调用 API - 输入意外结束

标签 javascript jquery json api

我想将 API 调用(外部源,没有机会更改 API 端的某些内容)从 PHP 更改为 Javascript(学习目的)。

由于跨域,我使用了fetch()。当我运行脚本时,出现意外的输入错误,并且无法找出原因。

function postData(url = '', data = {}) {
  var headers = new Headers();
  headers.set('Authorization', 'Basic ' + window.btoa("user" + ':' + "pass"));
  return fetch(url, {
    method: 'POST',
    mode: 'no-cors',
    cache: 'no-cache',
    credentials: 'include',
    headers: {
      'Content-Type': 'application/json'
    },
    redirect: 'follow',
    referrer: 'no-referrer',
    body: JSON.stringify(data),
  }).then(response => response.json()).catch(error => console.error(error));
}

postData('https://www.api-endpoint.com/cat1/api/search?', {
  "searchID": "710",
  "isTagged": true
}).then(data => console.log(JSON.stringify(data))).catch(error => console.error(error));

如何确定此代码的问题?看来授权没问题。我按照 API 开发手册中的描述实现了搜索参数(searchID 和 isTagged)。

提前致谢!

最佳答案

您说的是 mode: 'no-cors', 它会禁用所有需要 CORS 权限的内容。

由于跨源读取数据需要CORS权限,所以没有数据。

尝试将空字符串解析为 JSON 会导致输入意外结束,因为输入在任何 JSON 之前就结束了。

(请注意,需要 CORS 权限以及您尝试执行的其他操作包括将内容类型设置为 JSON 并包含凭据)。

关于javascript - 通过 fetch() 调用 API - 输入意外结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57727097/

相关文章:

javascript - 对象/数组元素表示法

c# - Entity Framework 模型到 Json 结果

javascript - 乒乓又名 FizzBu​​zz 测试

javascript - 如何在滚动到页面上的特定对象后触发 jQuery 事件(不是 "if scrollTop"解决方案)

javascript - Rails 6 应用程序链接在刷新之前不起作用

javascript - 语义 UI 下拉菜单不起作用

java - 处理:如何检查 JSON 对象是否已绑定(bind)

javascript - Android 混合应用程序给我 "Uncaught SyntaxError: Unexpected identifier",源 : (1)

javascript - Backbone.PageableCollection 的 fullCollection 重置后行为怪异

javascript - 基于用户代理重定向到移动站点 - 对 SEO 有何影响?