Jump to content

[Resolvido] PHP json para Javascript


vrodrigues

Recommended Posts

Boas tardes!

Tenho aqui uma duvida que se calhar algum de vos pode me dar umas luzes!

então é assim eu tou a construir um array num ficheiro php , com a particularidade de este estar a ser feito em JSON:

$json= Array(
'titulo'=>utf8_decode($array['titulo']),
'ID'=>$array['idofertas']);
$response=json_encode($json);

E no que pretendia fazer era receber este array num ficheiro javascript, mas ele não me esta a passar bem.

O código javascript que tenho até ao momento é este:

var response = this.responseText;
var json= JSON.parse(response);
var array_resp=json;
alert(array_resp.titulo)

o intuito é aparecer no ecra no javascript o conteudo "titulo"

alguem tem algumas luzes sobre isto?

Link to comment
Share on other sites

  • Replies 44
  • Created
  • Last Reply

Top Posters In This Topic

Tens erros de sintaxe?

O código que tens parece correto.

  • Vote 1

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

E o código que inclui aonde está o erro de sintaxe....... Se queres que te ajudemos tens que o mostrar.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

para determinar se estás a receber a resposta correctamente faz output do this.responseText para um elemento (div talvez)

- caso esteja correcto, o erro deverá encontrar fora do código apresentado porque parece bem

- caso esteja errado, o erro pode estar no envio ou na recepção, novamente código que não se encontra aqui

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

o código é o de php que já tinha colocado em cima, pk por exemplo quando faço um echo da variavel $response o echo é desta forma: {"titulo":"Comercial (M\/F)","ID":"462"}

Mas eu recebo os dados vindo do php desta forma:

var xhr = Ti.Network.createHTTPClient();
xhr.open('GET', encodedURI);
xhr.send();

xhr.onload = function() {
var addresposta = [];
var response = this.responseText;
alert(response);
var json= JSON.parse(response);
var array_resp=json;
alert(array_resp.titulo)

ahhh o output do this.responseText vem assim {"titulo":"Comercial (M\/F)","ID":"462"};

por isso deduzo eu que esteja a passar correctamente.

Edited by vrodrigues
Link to comment
Share on other sites

desculpa lá mas isso funciona a mim

se a variável response tem o texto que dizes então irá aparecer uma janela com o texto 'Comercial (M/F)' porque acabei de testar e deu correctamente

ou estas a omitir alguma coisa ou o erro será outra coisa qualquer !!!

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Vamos por partes...

var xhr = Ti.Network.createHTTPClient();

O que é o Ti?

xhr.open('GET', encodedURI);
xhr.send();
xhr.onload = function() {

onload... Este método é do q?

var addresposta = [];
var response = this.responseText;
alert(response);

ok...

var json= JSON.parse(response);
var array_resp=json; // Código inútil para que é isto? Precisas de um alias?
alert(array_resp.titulo)

O addresposta é para o quê?

De todo o código que meteste aqui, nenhum é a causa para o erro de sintaxe que tens.

Edited by brunoais

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Link to comment
Share on other sites

TI -> usado no titanium !

var xhr = Ti.Network.createHTTPClient();
xhr.open('GET', encodedURI);
xhr.send();

-> metodo do titanium para fazer a conexão e envio de parametros para um ficheiro num servidor.

add resposta e

var array_resp=json;

-> estão a mais esquecime de apagar, mas não interferem com o resto do código.

desculpa lá mas isso funciona a mim

se a variável response tem o texto que dizes então irá aparecer uma janela com o texto 'Comercial (M/F)' porque acabei de testar e deu correctamente

ou estas a omitir alguma coisa ou o erro será outra coisa qualquer !!!

O problema é que estas respostas são divididas por caixas de texto, e o erro que me dá é o que está em cima :s

Link to comment
Share on other sites

o erro é porque andas a abrir/fechar mal as chavetas em javascript

o browser ao detectar o erro deixa de executar o javascript e é por isso que não te aparece nada

por isso (e como disse no ponto de omitir)

ou fazes post de todo o código javascript que criaste ou é impossível detectar exactamente onde se encontra o erro.

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

o código JS e este:

var url = 'XXX/teste.php';

var params = '?params=' + inputpesquisa.value;
var lat = '&lat=' + latitude;
var log = '&log=' + longitude;
var raio = '&raio=' + kmpicked;
var cidade = '&cidade=' + inputcidade.value;
var estado = '&estado=' + estado;

var encodedURI = encodeURI(url + params + lat + log + raio + cidade);
//alert(encodedURI);


var xhr = Ti.Network.createHTTPClient();
xhr.open('GET', encodedURI);
xhr.send();

xhr.onload = function() {
 var addresposta = [];
 var response = this.responseText;
 alert(response);
 var array_resp = response;


if (response != null) {
	  alert(array_resp);

	   for (var i = 0; i <= array_resp.row; i++) {
			  addresposta.push(Ti.UI.createTableViewRow({
			  text : '	 ' + array_resp.titulo,
			  className : 'className',
			  height : '70 px',
			  backgroundImage : 'tabelrow_bkg.png',
			  }));
			  respostas.setData(addresposta);
			  win1.add(respostas);
		}
 } else {
			 var toastsempropostas = Ti.UI.createNotification({
			 duration : 2000,
			 message : 'Sem propostas para a pesquisa',
			 });
			 toastsempropostas.show();
}
};
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onerror = function(e) {
 alert('Transmission error: ' + e.error);}
Edited by vrodrigues
Link to comment
Share on other sites

como o código que apresentaste aqui parece estar correcto no que toca a abertura e fecho de chavetas,

continuo a dizer que falta aqui qualquer coisa, a razão de dizer isto é:


var url = 'XXX/teste.php';

var params = '?params=' + inputpesquisa.value; // inputpesquisa aparece do nada
var lat = '&lat=' + latitude; // latitude aparece do nada
var log = '&log=' + longitude; // longitude aparece do nada
var raio = '&raio=' + kmpicked; // kmpicked aparece do nada
var cidade = '&cidade=' + inputcidade.value; // inputcidade aparece do nada
var estado = '&estado=' + estado; // estado aparece do nada

como estás constantemente a mandar para trás, ou dizes directamente em que linha dá o erro ou terás de esperar por alguém com mais paciência ...

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

como o código que apresentaste aqui parece estar correcto no que toca a abertura e fecho de chavetas,

continuo a dizer que falta aqui qualquer coisa, a razão de dizer isto é:


var url = 'XXX/teste.php';

var params = '?params=' + inputpesquisa.value; // inputpesquisa aparece do nada
var lat = '&lat=' + latitude; // latitude aparece do nada
var log = '&log=' + longitude; // longitude aparece do nada
var raio = '&raio=' + kmpicked; // kmpicked aparece do nada
var cidade = '&cidade=' + inputcidade.value; // inputcidade aparece do nada
var estado = '&estado=' + estado; // estado aparece do nada

como estás constantemente a mandar para trás, ou dizes directamente em que linha dá o erro ou terás de esperar por alguém com mais paciência ...

esses valores vem de fora, e esses valores são enviados perfeitamente , não têm problema 😄 o problema esta a partir daqui

var response = this.responseText;
alert(response);
var array_resp = response;

porque (se tiver enganada diz) era suposto quando eu recebo os valores poder utilizar desta forma array_resp.titulo, e não consigo , o problema do titanium é que com este tipo de erros ele não diz qual a linha que dá erro , por isso não te consigo explicar qual é a linha ao certo. Não é por mal que não a digo é porque não sei.

Link to comment
Share on other sites

HappyHippyHippo, isto não é um site, é uma aplicação mobile.

vrodrigues, eu acho que tens um bocado de sorte disso fazer alguma coisa: só defines o callback depois de enviar o pedido? Troca lá a ordem dessas coisas.

De qualquer forma, não me parece que o erro seja daí. Ainda chegas a ver o alert da resposta?

Edit: no código que colocaste por último não fazes o parse ao JSON...

Edited by mjamado

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

HappyHippyHippo, isto não é um site, é uma aplicação mobile.

vrodrigues, eu acho que tens um bocado de sorte disso fazer alguma coisa: só defines o callback depois de enviar o pedido? Troca lá a ordem dessas coisas.

De qualquer forma, não me parece que o erro seja daí. Ainda chegas a ver o alert da resposta?

Edit: no código que colocaste por último não fazes o parse ao JSON...

Sim de outra forma não me funciona!(mal do titanium)

Mas agora ja tem o parse e dá-me o erro "Uncaught SyntaxError: Unexpected token { "

sim se fizer um alert á resposta eu vejo a resposta direita!

Edited by vrodrigues
Link to comment
Share on other sites

O onload tem que estar antes do send e do open. Troca isso. Se não funcionar, tens outros problemas.

Depois de fazeres isso, diz-me: vês o alert do response (antes do parse do JSON)?

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

Tens que ir dizendo mais coisas e experimentando outras, não podes estar à espera que estejamos sempre a fazer as mesmas perguntas. Continua a dar erro? Qual? O que é que estava no alert? E por aí fora...

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.