我有一個很簡單的Laravel控制器:Laravel無法返回true JSON響應
class MyController extends Controller
{
public function list()
{
return response()->json(['a' => 'hello']);
}
}
當我嘗試打開瀏覽器中的一個對應的URL(我使用谷歌瀏覽器),它工作正常。有{"a":"hello"}
響應,內容類型爲application/json
。
但是,當我接收通過javascript數據(我用fetch polyfill)我看到內容類型是text/html
。我檢查了它在GoogleChrome DevTools和我的代碼中:
fetch("/list")
.then(function(response) {
console.log(response.headers.get('Content-Type')); // => 'text/html'
return response.json();
})
.then(function(json) {
})
.catch(function(error){
});
嗯,我得到了錯誤 - Unexpected token < in JSON at position 0
。
我完全不明白髮生了什麼事。
PS:
Laravel版本 - 5.4,PHP版本7.0.15,XAMPP 3.2.2
取填充工具的版本 - 2.0.3
谷歌Chrome瀏覽器版本 - 57.0.2987.133
是的,這聽起來很奇怪,但在MS Edge v.20.10240,它工作正常。
你看過開發工具,看看請求響應什麼?這可能是服務器返回的HTML與數據 –
「我在GoogleChrome DevTools中檢查過它」 - 內容類型是「text/html」。那麼,問題是爲什麼?它應該是'application/json'。 – Sergey
嘗試檢查響應是否可用(您之前做過的同樣的事情,但應該在響應標籤旁邊的標題),每當我看到這個錯誤時,它往往會出於某種原因而從服務器響應html。 –