无法在php + codeigniter + jquery.ajax()中获取json响应

时间:2013-06-18 19:45:15

标签: php json codeigniter jquery

我的看法 -     

$(document).ready(function(){

    $(".varsity").change(function(){

       var id=$(this).val();
        $.ajax({
            type: "POST",
            url: "<?php echo base_url()?>/admin/get_varsity_faculty",
            data:"varsity_id="+id,
            dataType: 'json',
            success: function(data)
            {     
               alert(data);

            }
        });

    });

});

我的控制器(管理员)

public function get_varsity_faculty()
{
   //admin controller
    $varsity_id=$this->input->post('varsity_id');
    $faculties=$this->admin_varsity->get_faculty_information($varsity_id);
    //print_r($faculties);
    echo json_encode($faculties);

}

当print_r($ faculties)和我视图中的警报响应(删除dataType:'json')得到此输出时 -

 Array
(
[0] => Array
    (
        [unit_id] => 1
        [vid] => 3
        [unit_name] => Faculty of Civil Engineering 
        [form_starting_date] => 2013-05-15
        [form_end_date] => 2013-05-22
        [admission_date] => 2013-05-22
        [possible_result_date] => 2013-05-22
        [class_start_date] => 2013-05-21
        [is_active] => 1
    )

[1] => Array
    (
        [unit_id] => 2
        [vid] => 3
        [unit_name] => Faculty of Electrical & Electronic Engineering 
        [form_starting_date] => 0000-00-00
        [form_end_date] => 0000-00-00
        [admission_date] => 0000-00-00
        [possible_result_date] => 0000-00-00
        [class_start_date] => 0000-00-00
        [is_active] => 1
    )

[2] => Array
    (
        [unit_id] => 12
        [vid] => 3
        [unit_name] => Civil Engg
        [form_starting_date] => 2013-06-11
        [form_end_date] => 2013-06-12
        [admission_date] => 2013-06-18
        [possible_result_date] => 2013-06-04
        [class_start_date] => 2013-06-10
        [is_active] => 1
    )

我的模型非常好用。 但当我回应json_encode($ faculties);使用dataType:'json'在我的视图中我得到的响应就像[object] [object]。并且无法解析响应。我知道这不是一个棘手的问题。但我已经尝试了很多次来自己克服这个问题。一句话我的问题是如何在我的视图中获取json响应并从此数组中解析它。 感谢

2 个答案:

答案 0 :(得分:2)

它显示[Object, Object],因为您编码的数组是一个数组数组,最终作为最终解析的json中的对象数组。

例如:

<?php

    $array = array(
      0 => array('id' => 1),
      1 => array('id' => 2)
    );

    $json = json_encode($array);

以上将编码为:

[{"id" : 1}, {"id" : 2}]

当使用$.parseJSON之类的内容进行解析时,最终将会显示为包含两个对象的数组,或者当我们将其记录到控制台时:

[Object, Object]

[object Object],[object Object]如果您使用alert代替console.log(您不应该这样做)。请记住alert只显示一个字符串。如果您希望能够看到返回的对象的组成,则应始终使用console.log

您可以像在javascript数组查找中一样访问各个对象。如果上面是一个名为json_result的变量,那么你可以使用:

json_result[0] // this would return the first object of the array.

然后,您可以使用对象键来检索值:

json_result[0]['id'] // this will equal 1

答案 1 :(得分:0)

试试这个

<?php
    public function get_varsity_faculty()
    {
        $varsity_id=$this->input->post('varsity_id');
        $faculties=$this->admin_varsity->get_faculty_information($varsity_id);

        $rows = array();
        foreach($faculties->result() as $row)
        {
            $rows[] = $row;
        }

        print json_encode($rows);
    }
?>