簡體   English   中英

JSON發送空數組

[英]JSON Send empty array

當嘗試發送數組時,由於我用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 echo 沒有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);
    }

如您在圖片中所見,該數組包含數據:

與var_dump

我該怎么做才能解決此問題?

要擴展上一個答案,您需要將數組數據編碼為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;
}

不必在每次循環時都回顯json,而是在循環中構建數組,然后在完成后回顯json。

瀏覽器希望看到對AJAX調用的一個答復,而不是多個答復。

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) {
    $arr = array();
    $arr[]['Descricao'] = 'N/A';
}

$json_string = json_encode($arr,JSON_UNESCAPED_UNICODE);

if ( json_last_error() > 0 ) {
    file_put_contents('json_debug.txt', json_last_error_msg() );
} else {
    echo $json_string;
}
exit;

聽起來您收到的是Malformed UTF-8 characters, possibly incorrectly encoded錯誤,所以請像這樣更改此行

$json_string = json_encode($arr,JSON_UNESCAPED_UNICODE);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM