首页 > 解决方案 > 尽管 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就像一个新线程一样。

标签: javascript

解决方案


response.json()返回一个承诺,而不是内容。所以你需要return await response.json()

此外,您的服务器应返回内容类型设置为的数据'Content-Type': 'application/json'


推荐阅读