从jquery ajax中的json数组中访问各个值

时间:2011-11-23 08:30:46

标签: jquery json codeigniter

我在jQuery中有一个由AJAX返回的数组。我想迭代AJAX成功结果并从JSON数组中获取单个值。数据以字符串的形式返回。我正在使用jQuery的$.ajax从服务器上获取它,这很好。

//my View
$.ajax({
    type: "POST",
    url:"http://localhost:8888/CodeIgniter/index.php/user/usercontroller/search",//controller function
    cache: false,
    data:{"responsible1":res1},
    success: function(data21) { 
        alert(data21);
    });
});
//data 21 alerts the following
{"taskname":"Coding","projname":"Easy Wedding"} 
{"taskname":"Maintain","projname":"Easy Wedding"}
{"taskname":"Flow Chart","projname":"Fnn"}
{"taskname":"development in ","projname":"Fnn"}
{"taskname":"flow chart","projname":"Art gallery"}

如何仅访问个人tasknameprojectname或如何将data21转换为数组

5 个答案:

答案 0 :(得分:5)

只需将dataType: "json"添加到您的请求中,您就会将数据作为对象获取,但如果您将返回数据放入这些括号中,这将会起作用:[]

否则使用此

data21 = $.parseJSON('[' + data21.replace(/\"}/g, '"},').replace(/,$/, "") + ']');
console.log(data21);

example

答案 1 :(得分:1)

success: function(data) { 
data = jQuery.parseJSON(data);  
//now you can access the individual keys like alert(data.taskname+ " : "+data.projname)
    alert(data.taskname+ " : "+data.projname);
});

答案 2 :(得分:0)

只要JSON有效,您就应该能够使用索引访问对象数组。

如果这是返回的数据:

[
    {"taskname":"Coding","projname":"Easy Wedding"},
    {"taskname":"Maintain","projname":"Easy Wedding"},
    {"taskname":"Flow Chart","projname":"Fnn"},
    {"taskname":"development in ","projname":"Fnn"},
    {"taskname":"flow chart","projname":"Art gallery"}
]

然后这将起作用:

$.ajax({
    type: "POST",
    url: "http://localhost:8888/CodeIgniter/index.php/user/usercontroller/search",
    cache: false,
    dataType: "json",
    data: { "responsible1":res1 },
    success: function(data) { 
        alert(data[0].taskname);
    });
});

答案 3 :(得分:0)

可能会帮助你。

var  t = { 
   'rows': [
        {"taskname":"Coding","projname":"Easy Wedding"},
        {"taskname":"Maintain","projname":"Easy Wedding"},
        {"taskname":"Flow Chart","projname":"Fnn"},
        {"taskname":"development in ","projname":"Fnn"},
        {"taskname":"flow chart","projname":"Art gallery"}
    ]
}



$.each(t.rows,function(index,value){
    for(var i in value){
        alert(i+' -> '+value[i]);
    }
});

这是我认为读取json数据的方法。其中t包含json数据

编辑:

我不熟悉codeigniter,但是如果你将下面的代码放在普通的php文件中并运行它,你会发现你正在寻找的结果。

<?php
    $arr = array();
    $arr[] = array('taskname'=>'Coding','projname'=>'Easy Wedding');
    $arr[] = array('taskname'=>'Maintain','projname'=>'Easy Wedding');
    $arr[] = array('taskname'=>'Flow Chart','projname'=>'Fnn');
    $arr[] = array('taskname'=>'development in','projname'=>'Art gallery');
    echo json_encode(array('rows'=>$arr));
?>

它将创建与我在javascript t变量中创建的相同的json数据。

答案 4 :(得分:0)

以下是一些可能有用的代码:

从JSON到CI

1)CODEIGNITER

public function selectDetalleSolicitudByIdCliente() {
    $this->cliente_model->id_cliente = $_POST['id_cliente'];
    $data["cliente_detalle"] = $this->cliente_model->selectDetalleSolicitudByIdCliente();
    echo json_encode($data);
}

2)JQUERY

$.post(
    "cliente/selectDetalleSolicitudByIdCliente",
    {
        id_cliente: id_cliente
    },
    function(respuesta){
        $("#reporte2").html(">>" + respuesta);

        var respuesta = jQuery.parseJSON(respuesta);//parse json

        $.each(respuesta.cliente_detalle,function(index,value){
            for(var i in value){
                alert(i+' -> '+value[i]);
            }
     });
});
相关问题