【问题标题】:Accessing individual values from json array in jquery ajax从jquery ajax中的json数组访问单个值
【发布时间】:2011-11-23 08:30:46
【问题描述】:

我有一个由 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 转换为数组

【问题讨论】:

  • 这不是一个有效的 JSON 对象数组。你确定这是要返回的数据吗?它应该看起来像 [{...}, {...}, {...}]

标签: jquery json codeigniter


【解决方案1】:

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

否则使用这个

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

example

【讨论】:

  • yaa 我已经添加了数据类型 bt 它的 nt wrking 并提供相同的警报
【解决方案2】:
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);
});

【讨论】:

  • 如果它只发出警报,我可以访问...{"taskname":"Coding","projname":"Easy Wedding"}......bt 它不适用于倍数。 ..{"taskname":"Coding","projname":"Easy Wedding"} {"taskname":"Maintain","projname":"Easy Wedding"} {"taskname":"流程图","projname ":"Fnn"}
【解决方案3】:

只要 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);
    });
});

【讨论】:

    【解决方案4】:

    也许对你有帮助。

    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 数据。

    【讨论】:

    • 我应该如何以正确的格式返回 json 可能是我在那里犯了错误所以事情不工作..我希望 json 以 [ {"taskname":"Coding","projname" 返回:"Easy Wedding"}, {"taskname":"Maintain","projname":"Easy Wedding"}, {"taskname":"流程图","projname":"Fnn"}, {"taskname": "开发中","projname":"Fnn"}, {"taskname":"流程图","projname":"艺术画廊"}]
    • @ianace 它是 json_encode()。欲了解更多信息,您可以查看php.net/manual/en/function.json-encode.php
    • @ianace 我没有编码 json。我正在编码 php 数组名称 $arr。 json_encode() 将创建 javascript 等效对象(在本例中为 json)。你可以进入你的 ajax 成功调用并迭代它以获得你的结果。
    【解决方案5】:

    下面是一些可能有帮助的代码:

    从 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) 查询

    $.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]);
                }
         });
    });
    

    【讨论】:

      猜你喜欢
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-26
      相关资源
      最近更新 更多