donny_ 0 Denunciar post Postado Outubro 9, 2008 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
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 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
donny_ 0 Denunciar post Postado Outubro 9, 2008 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
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 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
donny_ 0 Denunciar post Postado Outubro 9, 2008 agora bugo tudo... funcionou nao, tpw Márcio, eu uso essa função em várias partes do site... PRINT SCREEN ERRO vlw Márcio... Compartilhar este post Link para o post Compartilhar em outros sites
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 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
donny_ 0 Denunciar post Postado Outubro 9, 2008 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
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 Tem como você me passar o link pra eu ver ? Compartilhar este post Link para o post Compartilhar em outros sites
donny_ 0 Denunciar post Postado Outubro 9, 2008 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
Marcio Leandro 0 Denunciar post Postado Outubro 9, 2008 Hospeda tudo, assim agiliza mais. Compartilhar este post Link para o post Compartilhar em outros sites