Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用json自动显示结果_Json_Codeigniter - Fatal编程技术网

使用json自动显示结果

使用json自动显示结果,json,codeigniter,Json,Codeigniter,目前我正在使用json自动显示我的reuslt,但我得到了一个错误,说json_encode():类型不受支持,编码为null,我想我的问题是视图,当我在下拉列表中选择in name时,我给出了一个错误json_encode():类型不受支持,编码为空 模型 控制器 function address() { $name=$this->input->post('name'); $this->load->model('default/M_profile');

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

模型

控制器

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>
$(文档).ready(函数(){
$('#配置文件选择')。更改(函数(){
var add=$(this.text();
$.ajax({
url:“管理员/档案/地址”,
方法:“张贴”,
数据:{profile:add},
成功:功能(添加){
$('地址').val(添加);
}
})
});
});
....

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

    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;
    }

您有很多错误:

1.在ajax中,它应该是
类型:'POST'
。而不是
方法:'POST'

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

3.在模型中,只需使用
result\u array()
返回数据即可

型号:

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):


$(文档).ready(函数(){
$('#配置文件选择')。更改(函数(){
var add=$(this.text();
$.ajax({
url:“”,
类型:“POST”,
数据:{profile:add},
成功:功能(添加){
var data=JSON.parse(add);//解析转换为onject的响应
console.log(数据);//在控制台中查看结果
警报(数据[0]。地址);
}
})
});
});
....

我希望它能对您有很大帮助。

这是一个很好的答案,我建议添加行:header('Content-Type:application/json');就在控制器方法中的“echo json_encode…”之前。这只是强制该方法返回的内容类型。我以前在IIS上遇到过一些问题。
function address() {
    $name=$this->input->post('profile');
    $this->load->model('default/M_profile');
    $data = $this->M_vendor->get_address($name);
    echo json_encode($data);
}
<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>