using angular js get data from codeigniter controller

穿精又带淫゛_ 提交于 2019-12-10 12:18:20

问题


I work with codeigniter with angular js. I had created one controller name Car.one model name car_model. In car controller i have created one method view () in which i am fetching data from the table that code file is

Car Controller

    <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

    class Car extends CI_Controller {

     public function __construct() {

        parent::__construct();
        $this->load->model('Car_model');
     }

     public function view()
     {
        $data = $this->db->get("cars")->result_array();
        echo json_encode($data);
     }
    }

i want to fetch data in json formate so had fetched that data and echo json_encode($data);

now i want to retrieve that data in angualrjs.

add_car View

<!DOCTYPE html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>
    <body ng-app="myapp" ng-controller="myctrl">
        <form method="post"  ng-submit="add(car_det)">
            Car name : <input type="text" ng-model="car_det.cname" name="name"><br>
            Car Image : <input type="file" custom-on-change="uploadFile" ng-model="car_det.cimage"><br>
            <input type="submit" name="add">
        </form>
        <br>
        <table>
            <tr><td>ID </td><td>Car Name</td><td>Car Image</td></tr>
            <tr ng-repeat="x in otherdata">
                <td>{{x.id}}</td><td>{{x.cname}}</td><td>{{x.cimage}}</td>
            </tr>
        </table>
    </body>
</html>


<script type="text/javascript">
var app = angular.module("myapp",[]);
app.controller("myctrl",function($scope,$http){
$http.get("<?=base_url()?>Car/view").then(function(response){
                $scope.otherdata = response.data;
            });
});
</script>

**

Error :

While i writing this code in my file, problem is that it shows data in table format it is proper but also showing extra json array in starting of page.

I am getting this output :

**

i had not written any code to display in starting of page still showing that ...

how to resolve that problem .. ?


回答1:


Change your controller function to:

public function view()
{
   $data = $this->db->get("cars")->result_array();
   header('Content-Type: application/json');
   echo json_encode($data);
}

You're sending json from the controller. but if you don't specify it, it's send as the default type which would be html i believe and that's why it's printed on your page.

Even better is if you use:

$this->output->set_content_type('application/json');
$this->output->set_output(json_encode($data));

using output is the right way to deal with output data in codeigniter controllers.




回答2:


If your view page is a html page then you have to define a global variable baseUrl where you need to write static base_url() value like this

var baseUrl = 'http://localhost/yourProjectName/';

If this your page is php page then defiine a hidden input tag and this value is base_url(); and inside script write

var baseUrl = $('#inputId').val();

then your script like this..

app.controller("myctrl",function($scope,$http){
    $http.get(baseUrl+'Car/view').then(function(response){
       $scope.otherdata = response.data;
    });         
});


来源:https://stackoverflow.com/questions/39263556/using-angular-js-get-data-from-codeigniter-controller

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