Passing JSON from controller to view in codeigniter

点点圈 提交于 2020-06-28 04:01:15

问题


I made an API call and received the response in JSON format.

JSON:

{
  "Specialities": [
    {
      "SpecialityID": 1,
      "SpecialityName": "Eye Doctor"
    },
    {
      "SpecialityID": 2,
      "SpecialityName": "Chiropractor"
    },
    {
      "SpecialityID": 3,
      "SpecialityName": "Primary Care Doctor"
    }
  ]
}

Controller File:

public function index(){
      $data= json_decode(file_get_contents('some_url'));
      $this->load->view('my_view',$data);
}

Above code doesn't work because in view I can't access the nested object properties. However I am able to echo the JSON properties in controller file just like this:

Controller File:

public function index(){

     $data=json_decode(file_get_contents('some_url'));
     foreach ($data as $key=>$prop_name){
        for($i=0;$i < count($prop_name);$i++){
          echo $prop_name[$i]->SpecialityID;
          echo $prop_name[$i]->SpecialityName;
        }
     }
}

My question is how do I pass this JSON to view and how can I access those properties in view file?


回答1:


As per Docs

Data is passed from the controller to the view by way of an array or an object in the second parameter of the view loading method.

Here is an example using an array:

So you need to change your code in controller

Controller.php

$data = array();
$data['myJson'] = json_decode(file_get_contents('some_url'));
$this->load->view('my_view',$data);

my_view.php

<html>
....
<?php 
//Access them like so
print_r($myJson);
// Rest of your code here to play with json 
?>
....
</html>



回答2:


In controller changes like

public function index(){
      $data['json_data']= json_decode(file_get_contents('some_url'));
      $this->load->view('my_view',$data);
}

and in the view

echo "<pre>";print_r($json_data);


来源:https://stackoverflow.com/questions/39593651/passing-json-from-controller-to-view-in-codeigniter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!