【问题标题】:Codeigniter / JSON - array result invalidCodeigniter / JSON - 数组结果无效
【发布时间】:2014-09-14 00:21:16
【问题描述】:

我的代码中有一个奇怪的行为。

下划线模板:

    <% _.each(pinnwand, function(item,key,list) { %>
        <strong>Item: <%= item.name %></strong>
    <% }); %>
    <% _.each(pinnwand2, function(item,key,list) { %>
        <strong>Item: <%= item.name %></strong>
    <% }); %>  

对于数组“pinnwand”和“pinnwand2”。

数组:

function getPinnwandData() {
    header('Content-Type: application/json');
    $array = $this->Pinnwand_model->getAllPinnwand($this->input->post('user_id'),"json");
    $data['pinnwand'] = array();
    foreach($array as $a) {
        $data['pinnwand'][] = array("name" => strtolower($a['name']), "id" => $a['id']);
    }
    $data['pinnwand2'] = array(array('name' => 'MettWand',"id" => 1),array('name' => 'wurst2',"id" => 2));
    echo json_encode($data);
}  

奇怪的是,“pinnwand2”正在显示,而“pinnwand”没有。
控制台日志显示:

Object {pinnwand: Array[0], pinnwand2: Array[2]}  

而且数据库中肯定有一些“pinnwand”的记录。

这是“邮递员”的 json 输出:

{
"pinnwand": [
    {
        "name": "wurst wand",
        "id": "1"
    },
    {
        "name": "schinken wand",
        "id": "2"
    },
    {
        "name": "mett wand ",
        "id": "3"
    }
],
"pinnwand2": [
    {
        "name": "MettWand",
        "id": 1
    },
    {
        "name": "wurst2",
        "id": 2
    }
]

}

我错过了什么?!谢谢!

编辑:
getAllPinnwand 方法:

    function getAllPinnwand($userId, $main = "all") {
    if($main == "json") {
        $query = $this->db->get_where('pinnwand', array('user_id' => $userId));
        return $query->result_array();
    } else {
        $query = $this->db->get_where('pinnwand', array('user_id' => $userId));
        $result = $query->result();
        foreach($result as $r) {
            $query1 = $this->db->get_where('pinnwand_content', array('pinnwand_id' => $r->id));
            $r->content  = $query1->result();
        }
        return $result;
    }
}

【问题讨论】:

    标签: php arrays json codeigniter underscore.js


    【解决方案1】:

    改变:

    foreach($array as $a)
    {
        $data['pinnwand'][] = array("name" => strtolower($a['name']), "id" => $a['id']);
    }
    

    到:

    $csx = count($myarray)
    
    for($x=0;$x<count($myarray);$x++)
    {
        $data['pinnwand'][$x] = array("name" => strtolower($myarray[$x]['name']),"id"=>$myarray[$x]['id']);
    }
    

    不要在代码中使用 $array 等保留关键字,取其他名称即可。不要指望 PHP 正在创建新元素。只需让循环定义计数器!

    看看有没有用……

    【讨论】:

    • 还是一样... pinnwand 是空的,pinnwand2 有项目
    • $array 非常安全
    • 能否请您在此 sn-p 旁边提供更多代码?!从创建此数组到具有预期结果的 xhr 请求。然后我们可以帮助你。但是只有这几行并不能帮助我们找到问题的根源。
    猜你喜欢
    • 2021-12-30
    • 2013-02-21
    • 1970-01-01
    • 2015-12-16
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    相关资源
    最近更新 更多