JSON发送空数组

时间:2016-01-11 12:52:51

标签: javascript php arrays json

当尝试发送数组时,我知道数组包含数据,因为我检查了var_dump,json_encode不发送任何数据。 这是我的代码:

for($i=0;$i<count($dados_atividades)-1;$i++)
    {
        $arr[$i+1]['Descricao'] = $dados_atividades[$i]['Descricao'];
        $arr[$i+1]['DataInicioPrevista'] = $dados_atividades[$i]['DataInicioPrevista'];
        $arr[$i+1]['DataConclusaoPrevista'] = $dados_atividades[$i]['DataConclusaoPrevista'];
    }
    if(count($arr)>0) {
        echo json_encode($arr);
    }else{
        $arr = array();
        $arr[0]['Descricao'] = 'N/A';
        echo json_encode($arr);
    }

正如您在图片中看到的,响应不包含任何php回声 without var_dump

这是我的代码var_dump:

for($i=0;$i<count($dados_atividades)-1;$i++)
    {
        $arr[$i+1]['Descricao'] = $dados_atividades[$i]['Descricao'];
        $arr[$i+1]['DataInicioPrevista'] = $dados_atividades[$i]['DataInicioPrevista'];
        $arr[$i+1]['DataConclusaoPrevista'] = $dados_atividades[$i]['DataConclusaoPrevista'];
    }
    if(count($arr)>0) {
    var_dump($arr);
        echo json_encode($arr);
    }else{
        $arr = array();
        $arr[0]['Descricao'] = 'N/A';

        echo json_encode($arr);
    }

如图所示,该数组包含数据:

with var_dump

我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:1)

要扩展上一个答案,您需要将数组数据编码为UTF-8

function utf8_converter($array)
{
    array_walk_recursive($array, function(&$item, $key){
        if(!mb_detect_encoding($item, 'utf-8', true)){
            $item = utf8_encode($item);
        }
    });

    return $array;
}

答案 1 :(得分:0)

不是每次循环回显json,而是在循环中构建数组,然后在json完成后回显json。

浏览器希望看到对AJAX调用的一个回复,而不是多个回复。

Malformed UTF-8 characters, possibly incorrectly encoded

听起来您收到了$json_string = json_encode($arr,JSON_UNESCAPED_UNICODE); 错误,因此请更改此行

// app.hbs
{{x-tree data=treeStructure}}

// x-tree.hbs
{{#each data.children as |child|}}
  {{component child.type data=child}}
{{/each}}