0

我的观点 -

$(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 响应并在我看来从这个数组中解析它。谢谢

4

2 回答 2

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.

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

json_result[0]['id'] // this will equal 1
于 2013-06-18T20:27:09.517 回答
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);
    }
?>
于 2013-06-18T19:53:43.450 回答