PHP Laravel视图json
我在从控制器到视图显示json时遇到一些问题。 如果我只返回json响应,我就有了PHP Laravel视图json,php,laravel,Php,Laravel,我在从控制器到视图显示json时遇到一些问题。 如果我只返回json响应,我就有了 {"result":true,"title":"Cable"} 像平常一样 但当我尝试将它实现到blade时,它不起作用。我在控制器里就是这样做的 $data1 = $getProduct->index(); $data = array( 'title'=> $data1['title'], 'Description'=>'T
{"result":true,"title":"Cable"}
像平常一样
但当我尝试将它实现到blade时,它不起作用。我在控制器里就是这样做的
$data1 = $getProduct->index();
$data = array(
'title'=> $data1['title'],
'Description'=>'This is New Application',
);
这就是我们的看法
{{ $title }}
和错误一样
Cannot use object of type Illuminate\Http\JsonResponse as array
只需使用
json\u decode()
即可将json对象转换为php数组
$data = json_decode($data1);
echo $data->title; // Cable
看起来您正试图使用单个函数为多个端点(一个json和一个视图)返回数据。这很好,只是共享函数应该返回数组而不是JsonResponse。JsonResponse类不是JSON对象,它是一个响应对象,除了包含所有响应数据(如头、cookie等)外,还包含这些数据 更新
索引()
以返回数组。从您的评论来看,这听起来像是包含在一个控制器中,但它在另一个控制器中使用。这应该存在于它自己的类中,然后从任何需要它的控制器调用它
public function index()
{
// retrieve/generate data
return [ 'result' => true, 'title' => $title, 'orders' => $orders ];
}
然后在json路由中执行以下操作:
public function jsonEndpoint()
{
return response()->json($getProduct()->index());
}
public function bladeEndpoint()
{
$data1 = $getProduct->index();
$data = array(
'title'=> $data1['title'],
'Description'=>'This is New Application',
);
return view('view_name', $data);
}
然后在您的刀片路线中执行以下操作:
public function jsonEndpoint()
{
return response()->json($getProduct()->index());
}
public function bladeEndpoint()
{
$data1 = $getProduct->index();
$data = array(
'title'=> $data1['title'],
'Description'=>'This is New Application',
);
return view('view_name', $data);
}
类
illigate\Http\JsonResponse
表示返回的数据不是数组而是对象
基于此,您应该这样做:
$data1=$getProduct->index();
//由于$data1是\Http\JsonResponse
//您需要以对象格式(而不是数组)获取数据
$data=数组(
'title'=>$data->title,
'Description'=>'这是新应用程序',
);
应该这样做
注意:如果$data1
为空,则您的json格式错误
尝试使用dd(您的_对象)或dump(您的_对象)查看对象内部的内容,然后将其作为响应发送当我这样做时,它是空的。您可以执行
打印(getProduct->index())编码>并粘贴ResultlLuminate\Http\JsonResponse对象([data:protected]=>{“result”:true,“title”:“Cable”}….尝试获取非对象的属性“title”可以显示更多控制器吗?getIndex()
返回什么?看起来它返回的是JsonResponse,而不仅仅是JSON。是的,这是return….return response()->json(['result'=>true,'title'=>$title,'orders'=>$orders,//'description'=>$description,'var'=>$var,'images'=>$images,]200);这是您的问题,您不应该使用response()->json()
如果要返回刀片,请执行返回视图('view\u name',['result'=>true,…])
。由于您是从另一个方法调用该方法,因此您似乎使用了错误的控制器,在没有更多信息的情况下,我无法建议如何修复该方法。$getProduct
包含什么?是另一个控制器吗?我正在将信息从一个控制器返回到另一个控制器。这就是我尝试返回json的原因,此返回为>$getProduct->index()
,现在当我只显示getProduct时,我可以看到json响应,当我解码它时,它是空的,当我编码它时,我会返回像{headers:{},original:{“title”:“Cable”}}
当你执行响应()->json()时
返回的不是JSON对象,而是包含JSON的响应对象。这是两件截然不同的事情。