Javascript 从ajax响应中提取json数据
这是我的js函数Javascript 从ajax响应中提取json数据,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,这是我的js函数 <script> function get_class_group(class_id) { $.ajax({ url: '<?php echo base_url();?>index.php?admin/get_class_group/' + class_id , success: function(response) {
<script>
function get_class_group(class_id) {
$.ajax({
url: '<?php echo base_url();?>index.php?admin/get_class_group/' + class_id ,
success: function(response)
{
var obj = response;
alert(obj);
}
});
}
</script>
如果我写入警报(对象节\u id)代码>它给了我
错误:“未定义”
如何从这个json中获取特定值
以下是我的后端功能:
function get_class_group($class_id)
{
$this->db->select('section.*, class_group.*');
$this->db->from('section');
$this->db->join('class_group', 'section.group_id = class_group.id', 'left');
$this->db->where('section.class_id', $class_id);
$groups = $this->db->get()->result_array();
foreach ($groups as $row) {
$value[] = $row;
echo json_encode($value);
}
}
因此,在json对象中,您将获得多个项,您必须使用$。每个来获取每个项的值
//each loop
$.each(obj,function(key,item){
alert(item.section_id);
});
请检查下面的工作代码段:
var obj=[{
“部门id”:“13”,
“姓名”:“A”,
“尼克的名字”:“A”,
“类别id”:“13”,
“组id”:“4”,
“教师id”:“6”,
“id”:“4”,
“组名”:“科学”
}, {
“部门id”:“22”,
“名称”:“B”,
“尼克的名字”:“b”,
“类别id”:“13”,
“组id”:“4”,
“教师id”:“0”,
“id”:“4”,
“组名”:“科学”
}];
$。每个(对象、功能(i、v){
控制台日志(v.section_id);
});代码>
使用一个each循环,您的响应是一个对象数组,使用stringify在对象中转换字符串
$.ajax({
url: '<?php echo base_url();?>index.php?admin/get_class_group/' + class_id ,
success: function(response) {
response = JSON.stringify(response);
$.each(response,function(i,v){
console.log(v.section_id);
});
}
});
看起来您的响应是纯字符串
确保后端正在响应中添加内容类型:application/json
头
或:
请尝试var res=JSON.parse(response)
,以便将字符串转换为对象。obj是一个数组,因此您将收到未定义的警报(obj.section\u id)。
使用下面的代码获取值
alert(obj[0].section_id); // you will get output as 13
alert(obj[1].section_id); // you will get output as 22
输出/响应似乎是json数组格式。要从json数组中访问任何特定元素,需要指定数组中的索引位置
请尝试在下面检查任何特定元素数据:
警报(obj[0]。节\u id)
这将提醒索引0的“section_id”(即数组中的第一个元素)
您可以随时更改索引以获取特定索引的数据。使用JSON.Parse(str)
手动解析对JSON的响应。或者在ajax
options.obj[0]中使用dataType:'json'
。您必须选择所需的索引或迭代每个元素给我错误未捕获类型错误:无法使用'in'运算符在[{“section_id”:“12”,“name”:“A”,“nick_name”:“A”,“class_id”:“13”,“group_id”:“5”,“teacher_id”:“6”,“id”:“5”,“group_name”:“Business”}]中搜索'128'(…)@尼桑辛哈看我的answer@RahulPatel这将不起作用,因为他没有对象数组,而是从多个回音对象构建了一个字符串,我的答案是正确的解决方案没有成功。给出:jquery-1.11.0.min.js:2未捕获类型错误:在添加标题('Content-Type:application/json')后,无法使用'in'运算符在[{“section_id:“12”,“name:“A”,“nick_name:”A”,“class_id:“13”,“group_id:”5”,“group_name:“Business”}])(…)中搜索'128';它起作用了。非常感谢您的帮助。@NishanSingha,如果答案解决了您的问题,请接受它,让未来的访问者能够立即知道此类问题的解决方案。
foreach ($groups as $row) {
$value[] = $row;
}
header('Content-Type: application/json');//add the json header if you want to remove the js stringify function
echo json_encode($value);
alert(obj[0].section_id); // you will get output as 13
alert(obj[1].section_id); // you will get output as 22