Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

alves077

[Dúvida] XMLHttpRequest recebendo dados em tempo real

Mensagens Recomendadas

alves077

Boa tarde,

Nem sei se estou na categoria certa, já que é uma mistura de js+php, Mas, tenho um form em php que manda para um outro ficheiro php. Quanto se carrega no botão de submit tenho um evento que chama uma função em js, onde crio um objeto do tipo XMLHttpRequest(). A minha questão é, como está recebe os dados dos outros ficheiros todo em conjunto, não é possível fazer com que vá recebendo a medida que o outro ficheiro envia?

Exemplo do código js que tenho

		var oXHR = new XMLHttpRequest();  
		oXHR.upload.addEventListener('progress', uploadProgress, false);
		oXHR.addEventListener('load', uploadFinish, false);
		oXHR.addEventListener('error', uploadError, false);
		oXHR.addEventListener('abort', uploadAbort, false);
		oXHR.open('POST', 'teste.php');
		oXHR.send(vFD);

E o ficheiro teste.php, por exemplo:

<?php

echo "teste1";
(.....)
echo "teste2";
(....)
echo "teste3";
?>

Queria que ele fosse mostrando gradualmente os echo's, se é que me faço entender... e não envia-se a resposta toda de uma vez.

Será possível só com este tipo de api's ?

Obrigado pela atenção,

alves077

Editado por alves077

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nelsonr

Boas,

talvez possas fazer algo do tipo, na primeira chamada é retornado o numero de blocos disponiveis.

Depois fazes tantas chamadas quantas definidas nesse numero, enviando o numero do bloco por parametro

No ficheiro teste.php, envias os dados referentes ao bloco pretendido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alves077

Obrigado pelas ideias. Estou a investigar por onde me guiar...

Já estive a fazer algumas experimentações, segundo o meu caso com as sessões, mas não tive grande resultado. A ideia pelo que percebo, é anexar por uma sessão pré-definida os dados que quero, no meu caso do ficheiro caso do ficheiro teste.php, e no outro ficheiro leio com o ini_get, certo?

Pelo que percebo também tenho que ter algo iniciado no php.ini para esta sessão funcionar corretamente. Sabem se o array que se anexa a sessão têm algum formato pré-definido?

Obrigado pela ajuda,

alves077

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
alves077

Já tentei algo do género, pelo que me parece, é o dizem no neste último link..

(...)
oXHR.open('POST', 'teste.php');
oXHR.onreadystatechange = function (aEvt) {
    if(oXHR.readyState == 3 && oXHR.status == 200)
 {
	   console.log(this.responseText);
   }
}
oXHR.send(vFD);

Mas a resposta chega sempre num só momento. Não consigo fazer o efeito de feedback que queria.. Não sei se consigo só com que estou a usar esse efeito.. Chega sempre a resposta em conjunto, queria o efeito como se fosse um "socket" mal o teste.php deva uma resposta (echo) ele apareceria na página original...

Obrigado pela atenção,

alves077

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
yoda

Quando corres um script PHP, o mesmo é tratado por completo e a resposta devolvida no fim, isto inclui o upload de ficheiros. Não dá para fazer o que queres só com esse código, tens de usar ora Flash ora outro método. O HTML5 supostamente dava para saber +- a percentagem do ficheiro concluída, mas nunca usei esse método.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.