Jump to content
Sign in to follow this  
alves077

[Dúvida] XMLHttpRequest recebendo dados em tempo real

Recommended Posts

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

Edited by alves077

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.