Javascript 从ajax响应中提取json数据

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

这是我的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)
            {
                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