Доступ к отдельным значениям из массива json в jquery ajax - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть массив, возвращенный AJAX в jQuery.Я хотел перебрать результат успеха 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"}

Как я могу получить доступ только к отдельным taskname и projectnameили как я могу преобразовать data21 в массив

Ответы [ 5 ]

5 голосов
/ 23 ноября 2011

просто добавьте dataType: "json" к вашему запросу, и вы получите ваши данные как объект, но это будет работать, если вы поместите возвращаемые данные в эти скобки: []

в противном случае используйте это

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

пример

1 голос
/ 23 ноября 2011
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);
});
0 голосов
/ 13 января 2013

Вот код, который может помочь:

От JSON до CI

1) КОДИГНИТЕР

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]);
            }
     });
});
0 голосов
/ 23 ноября 2011

Может быть, это поможет вам.

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));
?>

Он создаст те же данные JSON, что и я, созданный в переменной t javascript.

0 голосов
/ 23 ноября 2011

Пока 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);
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...