为什么在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个回答
有几个问题:
-
您没有检查 HTTP 请求是否成功。
很多人
都会犯这个错误,这是
fetch
API 设计中的一个缺陷,更多信息请见 此处 ,在我的博客上。您需要检查response.ok
。 -
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