Foros del Web » Programando para Internet » Javascript » Frameworks JS »

DIVS dentro de DIV

Estas en el tema de DIVS dentro de DIV en el foro de Frameworks JS en Foros del Web. Hola utilizo esta funcion de ajax: Código HTML: var http_request = false; function makeRequest(url) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request ...
  #1 (permalink)  
Antiguo 23/03/2007, 06:03
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
DIVS dentro de DIV

Hola utilizo esta funcion de ajax:

Código HTML:
var http_request = false;

function makeRequest(url)
{
	http_request = false;

	if (window.XMLHttpRequest) 
	{ // Mozilla, Safari,...
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) 
		{
			http_request.overrideMimeType("text/xml");
			// Ver nota sobre esta linea al final
		}
	}	
	else if (window.ActiveXObject) 
	{ // IE
		try 
			{
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} 
		catch (e) 
		{
			try 
			{
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (e) 
			{
			}
		}
	}

	if (!http_request) 
	{
		alert("ERROR :( No es posible crear una instancia XMLHTTP");
		return false;
	}
	http_request.onreadystatechange = alertContents;
	http_request.open("GET", url, true);
	http_request.send(null);

}

function alertContents() 
{

	if (http_request.readyState == 4) 
	{
		if (http_request.status == 200) 
		{
			alert(http_request.responseText);
		} 
		else 
		{
			alert("Hubo problemas con la petición.");
		}
	}

}

function XHConn()
{
	var xmlhttp, bComplete = false;
	try 
	{ 
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch (e) 
	{ 
		try 
		{ 
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
		}
		catch (e) 
		{ 
			try 
			{ 
				xmlhttp = new XMLHttpRequest(); 
			}
			catch (e) 
			{ 
				xmlhttp = false; 
			}
		}
	}
	if (!xmlhttp) return null;
	this.connect = function(sURL, sMethod, sVars, fnDone)
	{
		if (!xmlhttp) return false;
		bComplete = false;
		sMethod = sMethod.toUpperCase();
			
		try 
		{
			if (sMethod == "GET")
			{
				xmlhttp.open(sMethod, sURL+"?"+sVars, true);
				sVars = "";
			}
			else
			{
				xmlhttp.open(sMethod, sURL, true);
				xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
				xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			}
				
			xmlhttp.onreadystatechange = function()
			{
				if (xmlhttp.readyState == 4 && !bComplete)
				{
					bComplete = true;
					fnDone(xmlhttp);
				}
			};
					
			xmlhttp.send(sVars);
		}
		catch(z) 
		{	
			return false; 
		}
		return true;
	};
	return this;
}

function cargar_contenido(target, url) 
{ 
	document.getElementById(target).innerHTML = "<p>Cargando...</p>"; 
	var myConn = new XHConn(); 
	if (!myConn) alert("XMLHTTP no esta disponible. Inténtalo con un navegador más actual."); 
	var peticion = function (oXML) 
	{ 
		document.getElementById(target).innerHTML = oXML.responseText; 
	}; 
	myConn.connect(url, "GET", "", peticion); 
}
para cargar en diferentes divs diferentes includes, esto funciona, el problema lo tengo en una parte del codigo donde cargo dos divs dentro de un div, por defecto quiero que se me muestre lo que hay en los 2 divs y cuando se le de a cierto enlace se cargue en el div principal, esto funciona, pero cuando doy a otro enlace, despues de haber cargado el div principal, donde se me deberia cargar los 2 divs, no hace nada, la extructura es esta:

Código HTML:
<div id="principal">

    <div id="interno 1">
    <?php include('pagina1.php'); ?> 
    </div>
    <div id="interno 2">
    <?php include('pagina2.php'); ?> 
    </div>
</div> 

enlace1 apunta al div principal
enlace2 apunta al div interno 2
enlace3 apunta al div interno 2
enlace4 apunta al div interno 2
....


Nada mas se abre la página se carga lo que hay en los divs interno (el div interno 1 puede ser una foto que va cambiando segun se escoja un elace)
cuando le damos al enlace1 se carga en el div principal comiendose los divs internos, pero si le doy por ejemplo al enlace4, no hace nada se sigue mostrando el enlace 1 cuando deberia mostramerme lo del enlace4

El problema creo q es que cuando le doy al enlace1 el div principal se come el codigo de los divs internos y al intentar cargar los enlaces al no existir dicho divs no hace nada

Como puedo solucionar esto, alguien tiene alguna idea, gracias

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
  #2 (permalink)  
Antiguo 27/03/2007, 10:07
 
Fecha de Ingreso: marzo-2005
Mensajes: 171
Antigüedad: 19 años, 8 meses
Puntos: 0
Re: DIVS dentro de DIV

La verdad que no llego a leer todo el codigo porque no tengo tiempo, pero te comento que si vos cargas en el div principal con el ResponseText, este te reemplaza el codigo que ya tenes ahi dentro por el del ResponseText. O sea que te borra lo otros dos divs.
Lo que tendrias que hacer es incluir en el codigo del ResponseText lo siguiente:
Código PHP:
    <div id="interno 1">
    <?php include('pagina1.php'); ?> 
    </div>
    <div id="interno 2">
    <?php include('pagina2.php'); ?> 
    </div>
mas lo que te tiene que responder, asi supongo que te funcionaria.
Cuando llegue esta noche, me pongo a ver el codigo a ver si es eso realmente.
Saludos
  #3 (permalink)  
Antiguo 28/03/2007, 01:29
Avatar de bichomen  
Fecha de Ingreso: junio-2003
Ubicación: Barcelona y alrededores, España
Mensajes: 877
Antigüedad: 21 años, 5 meses
Puntos: 2
Re: DIVS dentro de DIV

Si lo solucione entre "" pero el problema es que cuando cargar un include en el div principal me machaca los divs internos, cree un if para que me cargara los divs internos, para que me entiendas tengo hasta tres niveles de includes y para cargar el mas interno tengo que cargar los otros 2 y hay es donde tengo el problema, parece que cuando cargo algo el div principal, aunque luego llame a traves del include donde tengo los internos, no los lee bien.

La idea es se carga la página principal con el div principal, en este hay un include que carga 2 divs y dentro de uno de ellos hay un include con un div donde cargo cosas. Por defecto funciona, pero a veces quiero cargar algo en el div principal y se me come el include con todo el codigo, luego con una condicion segun al enlace q de, me cargara en el div principal o en uno de los internos, pero esto ultimo es lo q no funciona, pq al intentar cargar los los includes y divs en cascada algo falla, espero haberme echo enteder.

bichomen
__________________
"Se sabe con exactitud, con cuanta imprecisión, se sabe algo"
Linux Registered User #320332
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:18.