Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Erro object '[object Object]' of type 'object'. PHP - > Ionic

Criei um pequeno serviço para consumir com o ionic com php

header('Content-Type: application/json');

$pessoa = array('nome' => 'fulano',
        'endereco'=> 'Avenida tal',
        'telefone'=> '2345-2134');

$pessoa = json_encode($pessoa);
echo $pessoa;

Que me retorna isso:

{"nome":"fulano","endereco":"Avenida tal","telefone":"2345-2134"}

Até aí tudo bem.

Quando tento implementar no ionic aparece esse erro:

Cannot find a differ supporting object '[object Object]' of type 'object'. NgFor only supports binding to Iterables such as Arrays.

Mas se eu colocar o json entre colchetes, o código no ionic funciona. Dessa forma:

[{"nome":"fulano","endereco":"Avenida tal","telefone":"2345-2134"}]

Alguém sabe como proceder, corrigindo no php ou no angular?

Estou utilizando HttpClient do Angular.

7 respostas

Oi Thiago, tudo bem? Me parece que no Angula você está usando o NgFor, que itera sobre arrays e não sobre objetos. A mensagem de erro diz exatamente isso, por isso que colocar chaves resolve o problema.

Entende?

Entendi isso, mas sabe se existe uma solução pra resolver ? Porque pra imprimir com chaves eu fiz isso abaixo:

echo "[$pessoa]";

Isso já resolve, não? Não vejo problema nessa abordagem.

Eu acredito que não deveria me preocupar com as chaves, que a resposta json deveria ter um padrão. Talvez eu esteja fazendo errado no consumo. Vou continuar investigando. Valeu pela atenção

solução!

Consegui resolver. Estava consumindo de forma errada.

No PHP passo um objeto e no ionic espero um array de objetos. Modifiquei no ionic pra consumir apenas um objeto e foi. Falta de atenção :/

Opa Thiago, mas foi exatamente isso que eu te falei no primeiro post, como você estava usando o ngFor, ele esperava um array e não apenas um objeto como estava retornando.

Acho que o que te confundiu de verdade foi o uso da função array no PHP.

Mas, tai, problema resolvido! Bons estudos.

Isso, faltou atenção da minha parte na hora que vc disse array.