Erro no FOR por requisição HTTPClient

31 views
Skip to first unread message

Diego Hennrich

unread,
May 23, 2012, 9:17:48 PM5/23/12
to Appcelerator Titanium Mobile - Brasil
Bom dia Galera, estou começando no Titanium e estou com um problema
aqui.

Eu fiz uma requisição HTTPClient e dentro dela estou tentando montar
uma viewRow customizada e para isso estou usando o "for"para repetição
do conteúdo. Porém, ao compilar o arquivo, vejo que o sistema não
executa o for e dessa forma não monta minha tableview.

Segue a URL do Json: http://www.universopositivo.com.br/mobile/informacoes.json


SEGUE ABAIXO O CONTEÚDO DO JS:


var winBase = Ti.UI.createWindow();

var conteudo_tabela = [];

var tableView = Ti.UI.createTableView({
selectionStyle: Ti.UI.iPhone.TableViewCellSelectionStyle.GRAY
});


var carregar_dados = Ti.Network.createHTTPClient({

onload: function(){


var result = JSON.parse(this.responseText);



for (var i=0; i < result.length; i++)

{
var row = Ti.UI.createTableViewRow({
height: 100

});

var labelNome = Ti.UI.createLabel({
text: result[i].modelo,
font:{fontsize:18, fontWeight:"bold"},
left: 15,
top: 5,
color:"red",
heigth:15
});

row.add(labelNome);

var labelEmpresa = Ti.UI.createLabel({
text: result[i].preco,
font:{fontSize:16},
left: 15,
bottom: 5,
color: "black",
height: 12
});

row.add(labelEmpresa);

conteudo_tabela.push(row);
}

},

onerror: function() {alert("Erro na conexão, por favor verifique o
acesso à internet.")},

oncancel: function(){}
})

carregar_dados.open("GET", "http://www.universopositivo.com.br/mobile/
informacoes.json");
carregar_dados.send();


tableView.setData(conteudo_tabela);
winBase.add(tableView);
winBase.open();

##############################################

Desde já agradeço, abraço a todos.

Rafael Kellermann Streit

unread,
May 23, 2012, 9:54:33 PM5/23/12
to titanium-...@googlegroups.com, Appcelerator Titanium Mobile - Brasil
Diego,

O teu setData deve estar na finalização do FOR.

Valeu,

--
Rafael Kellermann Streit
Sent from my iPad

Diego Hennrich

unread,
May 23, 2012, 11:42:58 PM5/23/12
to Appcelerator Titanium Mobile - Brasil
Eaí Rafael, eu fiz o que você me indicou, porém ainda não consegui
executar o for.

Eu fui testando e percebi que eu não consigo executar nada após o
comando " var result = JSON.parse(this.responseText); ". Tentei
colocar um alert manual ali só para ver se conseguia algum resultado,
porém não funcionou, ou seja, consequentemente o for abaixo não vai
executar. Se eu coloco o alert antes desse comando eu consigo
visualizá-lo. Porque não consigo executar nada abaixo dessa variavel ?

Abraço

On May 23, 10:54 pm, Rafael Kellermann Streit
<rafaelkellerm...@gmail.com> wrote:
> Diego,
>
> O teu setData deve estar na finalização do FOR.
>
> Valeu,
>
> --
> Rafael Kellermann Streit
> Sent from my iPad
>

Bruno Albano de Souza

unread,
May 24, 2012, 6:22:02 AM5/24/12
to titanium-...@googlegroups.com
Olá Diego,

Tente substituir  var result = JSON.parse(this.responseText);   por   var result = eval('(' + this.responseText + ')');

Diego Hennrich

unread,
May 24, 2012, 10:32:10 AM5/24/12
to Appcelerator Titanium Mobile - Brasil
Bruno,

Obrigado, mas tentei e também não deu certo =s

Eu pensei que poderia ser algum bug, porém comecei outro projeto com o
mesmo código, exclui a build do iphone e compilei novamente e continua
não funcionando nenhuma ação dentro do onload após " var result =
JSON.parse(this.responseText); ".

Alguém possui oura idéia.

On May 24, 7:22 am, Bruno Albano de Souza <brunoalb...@gmail.com>
wrote:

Dirlei Dionísio

unread,
May 24, 2012, 10:38:13 AM5/24/12
to titanium-...@googlegroups.com
> continua
> não funcionando nenhuma ação dentro do onload após " var result =
> JSON.parse(this.responseText); ".

Isso é sinal de que this.responseText não contêm um Json válido. Faça
log do retorno do webservice (Ti.API.debug) para descobrir o que tem
de errado nele.

[]s

--

Dirlei Dionísio
http://twitter.com/DirleiDionisio
http://MaisQueTitanium.blogspot.com
http://MaisQueBomCodigo.blogspot.com

Diego Hennrich

unread,
May 24, 2012, 4:39:41 PM5/24/12
to Appcelerator Titanium Mobile - Brasil
########## RESOLVIDO ####################


Valeu aí galera, consegui resolver o problema:

- A minha estrutura JSON estava errada mesmo.
- Eu não estava colocando o objeto dentro do for na hora de puxar os
dados.

Obrigado a todos, excelente comunidade. Espero ajudar os outros
também.

Micael Estrázulas Vianna

unread,
May 24, 2012, 4:42:13 PM5/24/12
to titanium-...@googlegroups.com
Uma boa dica para validar jsons é o JSONLINT


Abraço

Att
-------------------
Micael Estrázulas
Telefone: 85 9193-0721
Twitter: @mEstrazulas
Site: http://estrazulas.com
-------------------



2012/5/24 Diego Hennrich <diega...@gmail.com>

Diego Hennrich

unread,
May 24, 2012, 5:24:09 PM5/24/12
to Appcelerator Titanium Mobile - Brasil
Ótima dica de validação do JSON. Com certeza será bem útil daqui para
frente.

Obrigado.

On May 24, 5:42 pm, Micael Estrázulas Vianna <estrazu...@gmail.com>
wrote:
> Uma boa dica para validar jsons é o JSONLINT
>
> jsonlint.com
>
> Abraço
>
> Att
> -------------------
> Micael Estrázulas
> E-mail: estrazu...@gmail.com
> Telefone: 85 9193-0721
> Twitter: @mEstrazulas
> Site:http://estrazulas.com
> -------------------
>
> 2012/5/24 Diego Hennrich <diegaumz...@gmail.com>
Reply all
Reply to author
Forward
0 new messages