Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

donny_

Erro ao usar alert com echo

Recommended Posts

Bom galera, to fazendo um sisteminha aqui e to usando Ajax para abrir as paginas sem dar refresh.

 

js.js <- codigo ajax:

function abre(arquivo){
			var xmlHttp;
			try {
				// Firefox, Opera 8.0+, Safari
				xmlHttp=new XMLHttpRequest();
			}
			catch (e) {
				// Internet Explorer
				try {
					xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
				}
				catch (e){
					try {
						xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
					} 
					catch (e) {
						alert("Seu navegador não suporta AJAX. Atualize-o em www.getfirefox.com");
						return false;
					}
				}
			}
			xmlHttp.onreadystatechange=function() {
				if(xmlHttp.readyState == 1) {
					document.getElementById("conteudo_paginas").innerHTML = "Carregando...";
				}
				if(xmlHttp.readyState == 4) {
					document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
				}
			}
			xmlHttp.open("GET",arquivo,true);
			xmlHttp.send(null);
		}

ai qd desejo abrir algum link faço desse modo:

 

<a href="java script:;" onClick="abre('list_ped_novos.php');">Listar Pedidos Novos</a>

até ai tudo bem, vai abrir a pagina "list_ped_novos.php" na div "conteudo_paginas" que esta na pagina index.php.

 

Agora o problema: por exemplo, se na pagina "list_ped_novos.php" eu quiser dar um alert tipo:

 

echo '<script>alert("Alguma mensagem aqui");</script>';

esse alert não vai aparecer, dai a pagina list_ped_novos.php vai abrir vazia, agora se eu der um echo normal tpw:

 

echo "ola mundo";

aparece a mensagem "ola mundo" normal.... Alguem poderia me dizer o motivo deste problema?

 

ATT: não sei se postei no forum certo, na secao de JS disseram pra eu postar aqui, mais como o erro ta tando somente no echo resolvi postar aqui... galera muito obrigado e conto com vcs vlw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Donny, isto que você está fazendo chama-se gambiarra, desculpe.

Não é correto o PHP mandar o Javascript no response. Pense no papel de cada coisa, cada coisa em seu lugar, com suas responsabilidades.

Na verdade, o problema é com o javascript, e não com o PHP: O PHP fez o que você pediu pra ele fazer, ele imprimiu uma string. Quem ficou "enrolado" foi o browser, o javascript.

E mais ainda, seu tópico ficou promíscuo, pois você não identificou o problema, postou o seu script sem analisar o que estava ocorrendo, sem antes se perguntar coisas como: "está dando erro no javascript?", "Deu erro no script PHP ?", etc.

Vou te dar uma dica, sem complicar muito, criando um XML pra deixar um response mais completo, por exemplo informando que houve um erro, etc.

 

XMLHTTPRequest ===pergunta===> PHP
PHP ===responde===Browser(Javascript)

Veja o que acontece: O Browser, através deste objeto javascript faz uma requisição pro PHP. Este responde enviando a resposta pro Browser.

Se vai aparecer um alert, se vai criar um pop-up, ou uma div vai ser preenchida, etc, já não é mais o servidor que vai se "responsabilizar" por isso, ele apenas fornece a informação para que o browser decida o que fazer.

Então, faça assim: caso seja necessário dar o alert, coloque o PHP para imprimir '0'. Aí com o Javascript, você verifica criando uma condição:

 

se (resposta == '0')
{
   alert('deu erro');
}
else
{
   document.getElementById('algum_id_aqui').innerHTML = AJAX.responseText;
}

A lógica é essa.

Qualquer coisa posta aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Márcio, vlw pela dica, mais nao acho gambiarra pq sempre usei assim e uso até hoje e da super certo os alert apos a execucao de uma funcao, e tpw, foi você kem disse pra mim postar aki no forum de PHP, mais tpw, vou seguir tua ideia, lembrando que nao entendo nada, mais nada, de nada de JS e muito menos de AJAX, você dizer pra mim:

 

document.getElementById('algum_id_aqui').innerHTML = AJAX.responseText;

hauhauhaa, nao entendo nada, nem sei pra q serve essa funcao.... Vlw Márcio, mais vou tentar, se tiver algum exemplo na pratica ou coisa parecida.... Brigadao vlw mesmo... abçs...

 

OBS: vendo teu comentario do se..... e como você disse, o php responde pro browser o que fazer, e eu fiz isso:

 

if($sql_edit) {
		echo '<script>alert("Filme Editado com sucesso");</script>';
		echo '<script>history.back(-1)</script>';
}
}

 

se a variavel foi executada com sucesso ele vai exbir o alert e vai voltar para a pagina anterior.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa assim no PHP:

 

if($sql_edit) {
		echo 'Filme Editado com sucesso';
}
else {
				echo 'Erro editando Filme';
}

E lá na função que é executada após o response, deixa assim:

if(xmlHttp.readyState == 4) {
					alert(xmlHttp.responseText);
					history.back(-1);
				}

Veja se deu certo agora.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deixa eu ver como ficou essa função aqui:

xmlHttp.onreadystatechange=function()
E use o firebug no firefox, internet explorer não tem ferramentas boas pra debugar javascript.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não encontrou erros..... q trem complicado rpz

 

 

xmlHttp.onreadystatechange=function() {
				if(xmlHttp.readyState == 1) {
					document.getElementById("conteudo_paginas").innerHTML = "Carregando...";
				}
				if(xmlHttp.readyState == 4) {
					alert(xmlHttp.responseText);
					history.back(-1);					
					//document.getElementById("conteudo_paginas").innerHTML = xmlHttp.responseText;
				}
			}
			xmlHttp.open("GET",arquivo,true);
			xmlHttp.send(null);
		}

abçs...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem como você me passar o link pra eu ver ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

você precisaria de todo o sistema ou só do .js? pq ta no localhost, ai dependendo do q você precisar eu ja hospedo pq ainda nao terminei ai nem colokei as tabelas no DB, etc.... mais nois da um jeito pra tudo... Brigadao Márcio... vlw mesmo pela ajuda q tu ta me dando..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hospeda tudo, assim agiliza mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.