[英]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);
}
這是我的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);
}
如您在圖片中所見,該數組包含數據:
我該怎么做才能解決此問題?
要擴展上一個答案,您需要將數組數據編碼為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.