Laravel获取JSON数据后无法在Datatable中渲染列表如何解决
问题原因
你在控制器中调用$data->json()得到的是关联数组类型的返回结果,Blade模板中使用对象语法$value->title访问数组属性会抛出类型错误。
解决方案
提供两种可直接落地的修改方式,二选一即可:
方案1:修改视图访问语法(改法最快)
直接把视图中对象属性的调用方式改为数组调用:
{{ $value['title'] }}
修改后的完整视图代码:
<table id="table_id" class="display"> <thead> <tr> <th>Column 1</th> <th>Column 2</th> </tr> </thead> <tbody> @foreach ($data as $key => $value) <tr> <td> {{ $value['title'] }} </td> <td>{{ $value['body'] }}</td> </tr> @endforeach </tbody> </table>
方案2:控制器返回对象格式(适配原视图写法)
如果习惯用对象语法访问属性,修改控制器的json解析逻辑,关闭关联数组转换:
public function index() { $data = Http::get('https://jsonplaceholder.typicode.com/posts'); // json方法第二个参数传false,返回stdClass对象数组 return view('frontend.default.index', ['data'=> $data->json(false)]); }
修改后原视图的{{$value->title}}可以正常生效。
报错参考截图

内容的提问来源于stack exchange,提问作者livosoft
相关产品推荐
相关产品推荐

