Ir para conteúdo

POWERED BY:

Arquivado

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

Vinícius Franke

[Resolvido] Abrir páginas

Recommended Posts

Olá pessoal, estou com um problema que está me fazendo perder alguns fios de cabelos.

 

Tenho uma função em js que faz abrir páginas em um determinado container (no meu caso uso divs), o problema é que quero usar esta função várias vezes, na teoria bastaria eu informar o id da div onde abrir e a página a abrir, mas não está funcionando, a função só está abrindo uma página.

 

Segue abaixo os códigos:

 

javascript.js

function setaValor(pagina , id ) {

        if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {

            receiveReq.open("GET", pagina, true);
            idcomp = id;
            receiveReq.onreadystatechange = setar;
            receiveReq.send(null);
        }
    }

  function setar() {
        if (receiveReq.readyState == 4) {
            
            document.getElementById(idcomp).innerHTML = 
                    receiveReq.responseText;

        }
    }

 

ajax.js

function getXmlHttpRequestObject() {
        if (window.XMLHttpRequest) {
            return new XMLHttpRequest(); //Not IE
        } else if (window.ActiveXObject) {
            return new ActiveXObject("Microsoft.XMLHTTP"); //IE
        } else {
            alert("Seu navegador não suporta essa navegação.  Por favor atualize-o");
        }
    }
    var receiveReq = getXmlHttpRequestObject();
    var idcomp;

 

index.php

<html>
	<head>
		<title></title>
		<?php header("Content-Type: text/html; charset=ISO-8859-1",true) ?>
		<script language="javascript" src="ajax.js"></script>
		<script language="javascript" src="javascript.js"></script>
		<link rel="stylesheet" type="text/css" href="layout.css" />
	</head>
	<body>
		<div id="topo">
			<img src="imagens/logo.png"></p>
		</div>
		<div id="menu">
			<script>setaValor('menu.php','menu');</script>
		</div>
		<div id="conteudo"></div>
		<div id="rodape">
			<script>setaValor('rodape.php','rodape');</script>
		</div>
	</body>
</html>

Desde já agradeço, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

function setaValor(pagina , idcomp ) {

 

if (receiveReq.readyState == 4 || receiveReq.readyState == 0) {

 

receiveReq.open("GET", pagina, true);

receiveReq.onreadystatechange = function()

{

document.getElementById( idcomp ).innerHTML = receiveReq.responseText;

}

receiveReq.send(null);

}

}

você estava 'perdendo' o outro parâmetro qndo criou mais uma função..

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostre como você está tentando fazer as chamadas da função.

 

e poste também o teu html.

Compartilhar este post


Link para o post
Compartilhar em outros sites

mostre como você está tentando fazer as chamadas da função.

 

e poste também o teu html.

 

Chamo a função assim:

<div id="menu">
  <script>setaValor('menu.php','menu');</script>
</div>
<div id="rodape">
  <script>setaValor('rodape.php','rodape');</script>
</div>

a minha página inicial, onde serão exibidas as divs é esta que eu postei anteriormente: index.php

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... estranho isso, você não acha ?

 

tipo.. se já tá usando php, pq não faz com include ?

 

se alguém entrar no teu site com suporte a javascript desabilitado, não vai ver nada, pq você tá baseando o teu site em javascript obstrutivo.

além de gastar desnecessariamente requisições assincronas..

 

imagina qntas requisições você faz, apenas para montar a página..

-> o cara entra no site : 1

-> ai o servidor devolve a index, e ela começa a ser montada, e faz mais 2 requisições ajax

 

ou seja, você gasta 3 requisições, onde poderia ter apenas uma.

 

Eu não tinha testado, desculpe..

<html>
	<head>
		<title></title>
		<?php header("Content-Type: text/html; charset=ISO-8859-1",true) ?>
		<script type="text/javascript">
		function id( el ){
			return document.getElementById( el );
		}
		function getHTTPObject(){
			if(window.XMLHttpRequest){
				return new XMLHttpRequest();
			}else if(window.ActiveXObject){
				var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
				for(var i = 0; i < prefixes.length; i++){
					try     {
						return new ActiveXObject(prefixes[i] + ".XMLHTTP");
					} catch (e) {}
				}
			}
		}
		function setaValor( pagina, idcomp ) 
		{
			var xmlHttp = getHTTPObject();
			xmlHttp.open("GET", pagina, true);
			xmlHttp.onreadystatechange = function()
			{
				if ( xmlHttp.readyState == 4 )
				{
					id( idcomp ).innerHTML = xmlHttp.responseText;
				}
			}
			xmlHttp.send( null );
		}
		window.onload = function()
		{
			setaValor('menu.php','menu');
			setaValor('rodape.php','rodape');
		}
		</script>
		<link rel="stylesheet" type="text/css" href="layout.css" />
	</head>
	<body>
		<div id="topo">
			<img src="imagens/logo.png" alt="" >
		</div>
		
		<div id="menu">
		</div>
		
		<div id="conteudo"></div>
		
		<div id="rodape">
		</div>
	</body>
</html>
vamos lá.. errinhos:

você não tava esperando o DOM carregar, para usá-lo. Ou seja, não dá pra você fazer uma chamada para um elementro dentro dele mesmo, teria que fazer após no fluxo html, ou esperando o DOM carregar com o window.onload()

 

você precisa disparar uma requisição para cada item, se não uma vai sobrescrever o resultado da outra.

o envio, precisa acontecer antes de testar o readyState, e primeiro você vê se mudou o estado, para depois ver em que estado ele se encontra.

Pelo encadeamento dos IFs que você tinha, não ia dar certo nunca.

 

Mas pense no que eu disse, você tá desperdiçando processamento, e tornando o teu site não acessível.

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.