使用json自动显示结果
目前我正在使用json自动显示我的reuslt,但我得到了一个错误,说json_encode():类型不受支持,编码为null,我想我的问题是视图,当我在下拉列表中选择in name时,我给出了一个错误json_encode():类型不受支持,编码为空 模型 控制器使用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');
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>