我正在使用回购https://github.com/mschwarzmueller/laravel-ng2-vue/tree/03-vue-frontend,所以我对代码的可靠性有100%的信心。我可以通过laravel端点通过非常简单的Vue客户端,也可以通过邮递员。通过Postman,我可以检索表数据数组,但在客户端应用程序中并非如此。邮递员:
localhost:8000/api/quotes
效果很好。
在vue 2 js客户端应用程序中:
methods: {
onGetQuotes() {
axios.get('http://localhost:8000/api/quotes')
.then(
response => {
this.quotes = (response.data.quotes);
}
)
.catch(
error => console.log(error)
);
}
什么都不回。将响应返回给Console.log什么也不返回。Network/XHR选项卡显示表数据行,但我不确定这意味着什么。
我确信,这段代码适用于具有唯一api端点的其他代码,我假设这些端点可能不使用localhost或'127:0.0.1:1080。
编辑:响应要求获得更多信息
public function getQuotes()
{
$quotes = Quote::all();
$response = [$quotes];
return response()->json($response, 200);
}
及有关路线:
Route::get('/quotes', [
'uses' => 'QuoteController@getQuotes'
]);
确认一下:我使用的是经过验证的github回购代码,其中唯一的更改是问题正文第一行中提到的api端点地址。。请注意,Laravel后端也是从Max精细教程中的相关回购中派生出来的。正在运行的代码可以在
所以,我真的不认为这是编码错误-但这是由于我使用本地主机造成的配置错误吗?
编辑:这是一个编码错误在laravel控制器中,如下所示
发布于 2017-02-21 00:12:05
如果您没有在控制器中为您的$quotes
提供密钥,但是您正在vue文件(response.data.quotes
)中查找它,那么您的代码就无法工作。
[$quotes]
本质上是[0 => $quotes]
,所以当json响应通过时,它是0: [...]
而不是quotes: [...]
。
为了让它发挥作用,你只需要改变一下:
$response = [$quotes];
至:
$response = ['quotes' => $quotes];
此外,只要是FYI,就不需要在response->json()
中提供response->json()
,因为它是默认的,您只需返回一个数组,Laravel
就会自动返回正确的json响应,例如:
public function getQuotes()
{
$quotes = \App\Models\Artist::all();
return compact('quotes'); //<-- This is just another way of writting ['quotes' => $quotes]
}
很明显,如果你不想的话,你就不用这么做了。
希望这能有所帮助!
https://stackoverflow.com/questions/42354745
复制相似问题