开发者问题收集

为什么在Laravel中获取JavaScript总是返回空值?

2019-09-23
1100

我正在 blade 模板视图内从系统本身获取 API。但我总是返回 {}。

fetch("http://mylaravelapp.com/api/list")
.then(response => {
     console.log(JSON.stringify(response));
});

我已经使用此库 https://github.com/barryvdh/laravel-cors 在我的 API 中设置了 CORS 标头。

2个回答

有几个问题:

  1. 您没有检查 HTTP 请求是否成功。 很多人 都会犯这个错误,这是 fetch API 设计中的一个缺陷,更多信息请见 此处 ,在我的博客上。您需要检查 response.ok
  2. response 是一个没有自己的可枚举属性的对象,因此 JSON.stringify 将为其返回 “{}” 。要获取响应,您必须通过响应对象的方法之一 读取 响应主体,例如 text json arrayBuffer formData ,或 blob

例如:

fetch("http://mylaravelapp.com/api/list")
.then(response => {
    if (!response.ok) {
        throw new Error("HTTP error " + response.status);
    }
    return response.text(); // or .json(), .arrayBuffer(), ...
})
.then(data => {
    console.log(JSON.stringify(data));
})
.catch(error => {
    console.error(error.message);
});
T.J. Crowder
2019-09-23

尝试返回 JSON 数据并在 Fetch 请求中使用 JSON 数据类型

Vishal Bondre
2019-09-23