Jump to content

[Dúvida] XMLHttpRequest recebendo dados em tempo real


alves077

Recommended Posts

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

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

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.