将 JSON 数据从控制器发送到 Blade 中的视图:Laravel 5.2

Send JSON Data from Controller to View in Blade: Laravel 5.2

下面是class即returns国家数据

class CountryData {
    public function GetCountries() {
        return response()->json(['Data' => \App\Models\CountryModel::all()]);
    }
}

我有以下 Json 以上函数返回的数据

HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: application/json 
{
    "Data":[
              {
                  "CountryID"  : 1,
                  "Country"    : "United States",
                  "CountryCode": "US"
              }
           ]
}

下面是Controller中的代码

$Countries = (new \App\DataAccess\CountryData())->GetCountries();
return view('Country.List')->with('Countries', json_decode($Countries));

下面是View中的代码

@foreach($Countries["Data"] as $Country)
    <tr class="odd pointer">
        <td class=" ">{{$Country["Country"]}}</td>
        <td class=" ">{{$Country["CountryCode"]}}</td>
    </tr>
@endforeach

当我键入 echo $Countries; 时,我会看到上面的文字。当我输入 echo json_decode($Countries, true); 它显示空白。你能告诉我为什么会这样吗?

我这样做的原因是使用以下代码将数据传递到 Blade。

$Countries = (new \App\DataAccess\CountryData())->GetCountries();
return view('Country.List')->with('Countries', json_decode($Countries));

需要在json_decode($data,true)函数中加上true。 改变这个

$Countries = (new \App\DataAccess\CountryData())->GetCountries();
return view('Country.List')->with('Countries', json_decode($Countries));

改为

$Countries = (new \App\DataAccess\CountryData())->GetCountries();
return view('Country.List')->with('Countries', json_decode($Countries,true));

查看

@foreach($Countries["Data"] as $Country)
    <tr class="odd pointer">
        <td class=" ">{{$Country["Country"]}}</td>
        <td class=" ">{{$Country["CountryCode"]}}</td>
    </tr>
@endforeach

控制器代码如下:

return view('Country.List')->with('Countries', $Countries->getData()->Data);
                                                           ^^^^^^^^^^^^^^^

但我不确定这是否是解决此问题的正确方法。我正在阅读 JsonResponse