我在 laravel中有一个查询,我想用 json 传递。问题是键和值都传递给了我分配的变量。我尝试在控制器内部传递 $data= json_encode($ip); 并在视图中返回它,但我只得到一个结果。如何仅获取值?
控制器
public function displayIP()
{
$ipadd = DB::table('seatplan_client')->select('ipadd')->get();
foreach ($ipadd as $ipadds)
{
$ip = $ipadds->ipadd;
$data= json_encode($ip);//test
echo $data;
}
return View::make('seatplan')->with('ipadd',$ipadd);
}
视图
<script> var takenSeats = {{ json_encode($ipadd) }}</script>
页面源中的结果
var takenSeats = [{"ipadd":"192.168.240.1"},{"ipadd":"192.168.240.2"},{"ipadd":"192.168.240.23"},{"ipadd":"192.168.240.38"}]
你需要创建一个"翻译"你的对象的数组:
$ipadsArray = array();
foreach ($ipadd as $ipadds)
{
$ipadsArray[] = $ipadds->ipadd;
}
return View::make('seatplan')->with('ipadd',$ipadsArray);
你需要这样做,因为你正在使用laravel的ORM,它返回stdObjects,当你序列化它时,你也会得到公共属性。
如果你有一个模型,你可以实现可序列化的接口
<script> var takenSeats = {{ json_decode($ipadd) }}</script>
这会将您的 json 数组转换为 php 数组。如果您不想使用它,可以省略这些键。