使用json自动显示结果

时间:2017-01-27 08:47:38

标签: json codeigniter

目前我正在使用json自动显示我的reuslt,但我得到错误说json_encode():类型不受支持,编码为null,我认为我的问题是视图,当我在下拉列表中选择名称时我给出了错误json_encode():类型不受支持,编码

模型

function get_address($name) {
    $vendres = array('name' => $name);
    $this->db->select('address');
    $this->db->where($vendres);
    $this->db->distinct();
    $result = $this->db->get('profile');
    if($result->num_rows() > 0){
        foreach($result->result_array() as $row){
            echo $row['address'];
        }
    }
    return $result;
}

控制器

function address() {
    $name=$this->input->post('name');
    $this->load->model('default/M_profile');
    $data['address'] = $this->M_vendor->get_address($name);
    $this->output->set_output(json_encode($data));
    //echo $data;
    return;
}

在视图中我使用下拉列表。

$(document).ready(function () { 
    $('#profile select').change(function () {
        var add = $(this).text();
        $.ajax({   
            url: "<?php echo base_url();?>admin/profile/address",
            method: "POST", 
            data: {profile: add},

            success: function(add) {

                $('#address').val(add);
            }
        })
    });
});
<select name="test">....</select>

2 个答案:

答案 0 :(得分:1)

你有很多错误:

1.在ajax中它应该是type:'POST'。不是method:'POST'

2.在控制器中它应该是$this->input->post('profile')

3.在模型中,只需使用result_array()返回您的数据。

MODEL:

function get_address($name) {
    $vendres = array('name' => $name);
    $this->db->select('address');
    $this->db->where($vendres);
    $this->db->distinct();
    $result = $this->db->get('profile');
    if($result->num_rows() > 0){
        return $result->result_array();
        }
    }

}

控制器:

function address() {
    $name=$this->input->post('profile');
    $this->load->model('default/M_profile');
    $data = $this->M_vendor->get_address($name);
    echo json_encode($data);
}

查看:(Ajax的):

<script type="text/javascript">
$(document).ready(function () { 
    $('#profile select').change(function () {
        var add = $(this).text();
        $.ajax({   
            url: "<?php echo base_url('admin/profile/address');?>",
            type: "POST", 
            data: {profile: add},

            success: function(add) {
                var data = JSON.parse(add);//parse response to convert into onject
                console.log(data);//see your result in console
                alert(data[0].address);

            }
        })
    });
});
</script>
<select name="test">....</select>

我希望它可以帮到你很多。

答案 1 :(得分:0)

您正在回显结果而不是返回

    function get_address($name) {
        $vendres = array('name' => $name);
        $this->db->select('address');
        $this->db->where($vendres);
        $this->db->distinct();
        $result = $this->db->get('profile');
        if($result->num_rows() > 0){
            foreach($result->result_array() as $row){
                $result[] = $row['address'];
            }
        }
        return $result;
    }