Haber voy a intentar exponer el problema con todos los datos posibles, aunque ya tengo por los foros un par de temas preguntando mas o menos lo mismo, pero es que necesito solucionarlo.
Estoy utilizando ajax, para la carga de páginas, utilzo esta función en ajax.js:
Código HTML:
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// Cargar diferentes includes en una página:
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);
}
con esto consigo cargar varios includes en varios divs en el index.php
El menu con los enlaces, estan dentro de un include tambien y los enlaces son tal que asi:
Código HTML:
<a href="javascript:cargar('rutadelinclude,'id');">enlace 1</a>
rutadelinclude es la ruta del include a cargar
id es el identificador del enlace para luego cargar diferentes includes en el index, dependiendo del enlace dado
Código HTML:
<script type="text/javascript" language="javascript">
var v,p;
function cargar(ruta,id)
{
cargar_contenido("foto", "includes/foto.php?f=" + id); //Foto arriba a la izquierda
cargar_contenido("fotos", "includes/fotos.php?f=" + id); //Fotos arriba a la derecha
cargar_contenido("titulo", "includes/titulos.php?valor=" + id); //Titulo del marco
//Aqui cargo diferentes includes, dependiendo de la ruta y del indetificador
///Ahora viene el meoyo de la cuestion
switch (id)
{
case "11": //FORO
cargar_contenido("banners", "includes/banners.php?b=" + id); //banners
cargar_contenido("mayor9", ruta); //Tabla inferior derecha
v = true;
break
case "21": //Pesión Andreva
cargar_contenido("m", ruta); //Tabla inferior
p = true;
break
default:
if(v)
{
//cargar_contenido("m", "includes/enlacemayor.php"); //Tabla inferior
cargar_contenido("banners", "includes/banners.php?b=" + id); //banners
cargar_contenido("mayor9", "includes/enlace.php"); //Tabla inferior derecha
cargar_contenido("anuncios", "includes/anuncios.php?a=id"); //Anuncios
cargar_contenido("detalles", ruta); //Páginas
}
else
{
cargar_contenido("banners", "includes/banners.php?b=" + id); //banners
cargar_contenido("anuncios", "includes/anuncios.php?a=" + id); //Anuncios
cargar_contenido("detalles", ruta); //Páginas
}
}
}
</script>
ACLARACION:
tengo tres divs banners, anuncios, detalles
en detalles cargo los enlaces, excepto en 2 que los cargo en un div "mayor9" que abarca los divs anuncios y detalles y un tercero "m" que abarca los tres divs(banners, anuncios, detalles), esto lo hago poque estos dos enlaces quiero que se cargen ocupando un mayor tamaño que el div detalles, como el innerHTML se come lo que hay en los divs, si llamo al div "m" y cargo el codigo de un enlace cuando quiera dar a otros enlaces y que se me cargen en el div "detalles" me dada error ya que no existe el div detalles, asi que lo que hice fue meter el codigo del los div "anuncios" y "detalles" en un include(enlace.php) y el codigo del div "banners" y "mayor9" en otro include(enlacemayor).php, luego con la funcion cargar comprobar cuando se da a un enlace u a otro y dependiendo del cual se da carga uno includes u otros, el problema es que cuando se carga la página por defecto muestra todos los divs correctamente, asi que se puede acceder a ellos pero cuando cargo en el div "mayor9" el include me lo carga bien, pero si intento cargar a continuacion otros enlaces en detalle no funciona al menos en firefox, en el explorer, la primera vez me muestra el include por defecto y si vuelvo a darle al enlace me lo muestra bien, pero el firefox solo muestra el que es por defecto, yo creo que el problema esta aqui:
Código HTML:
if(v)
{
//cargar_contenido("m", "includes/enlacemayor.php"); //Tabla inferior
cargar_contenido("banners", "includes/banners.php?b=" + id); //banners
cargar_contenido("mayor9", "includes/enlace.php"); //Tabla inferior derecha
cargar_contenido("anuncios", "includes/anuncios.php?a=id"); //Anuncios
cargar_contenido("detalles", ruta); //Páginas
}
como cuando enlace.php este llama a otro include, cuando el navegador intenta cargar los divs "anuncios" y "detalles", no los ve de entrada y ya no los carga.
Por eso e intentado varias cosas, por ejemplo que el navegador lea primero todo el codigo y luego cargue el includes en los divs "anuncios" y "detalles"
o si alguien se le ocurre como hago para que el ajax me procese el codigo, siento haberme extendido tanto, pero espero haber dejado bien claro la problematica que tengo, gracias de antemano
bichomen