javascript - 尽管 URL 正确,Javascript 提取仍不返回
问题描述
我过去使用 JQuery 来执行 AJAX 请求。我现在正在尝试使用fetch
,但我正在苦苦挣扎。
我的代码非常简单,它调用了一个 C# 后端。后端断点被命中,所以我不认为 URL 有任何问题
this.get = function (url) {
return getData(url);
};
async function getData(url = '') {
const response = await fetch(url, {
method: 'GET', // *GET, POST, PUT, DELETE, etc.
mode: 'same-origin', // no-cors, *cors, same-origin
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow',
referrerPolicy: 'no-referrer'
});
return await response.json(); // BREAK POINT NEVER HIT
}
在浏览器开发工具中,我在行上放了一个断点,const response = await fetch(url, {
在return await response.json;
第一个突破被击中。第二个从来没有命中。我没有看到任何错误消息或异常。
我怎样才能知道发生了什么?
查看响应,它表明它正在等待一个承诺
编辑
好像我的程序没有在等待await
......我的理解是代码在收到(等待)响应之前不应该继续。发生的事情是,一旦它击中await
,它似乎就退出了该功能。上的断点return await response.json()
最终会被击中,但await
就像一个新线程一样。
解决方案
response.json()返回一个承诺,而不是内容。所以你需要return await response.json()
此外,您的服务器应返回内容类型设置为的数据'Content-Type': 'application/json'
推荐阅读
- ruby-on-rails - 在 Google Cloud Run 中使用 Sidekiq 的 Rails 作业不起作用
- amazon-web-services - RHat企业服务器7.7 EC2镜像突然关闭80端口
- javascript - reactjs如何恢复到之前的状态?
- javascript - 如何在Javascript中将问号包围的文本提取到数组中
- python - 如何使用 Azure API 检测情绪?
- excel - 将 Excel 工作表转换为 paradox DB
- reactjs - 离子反应中的网络工作者
- python - Spark dataFrame在更新其列后显示时间过长
- android - 如何在android中的AWS复制操作中获取复制操作的进度?
- android - Android CTS 不运行