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

redireccionar pagina usando php y ajax

Estas en el tema de redireccionar pagina usando php y ajax en el foro de Frameworks JS en Foros del Web. Hola gente del foro, espero esten bien. Mi problema es el siguiente: Tengo una pagina 'index.php' donde muestro información y en la cual poseo un ...
  #1 (permalink)  
Antiguo 25/06/2008, 22:30
 
Fecha de Ingreso: junio-2008
Mensajes: 8
Antigüedad: 15 años, 10 meses
Puntos: 0
redireccionar pagina usando php y ajax

Hola gente del foro, espero esten bien. Mi problema es el siguiente: Tengo una pagina 'index.php' donde muestro información y en la cual poseo un 'div' el cual sirve para mostrar información con el ajax. Ahora, una de las partes que muestro es un registro y si el registro del usuario no va, muestra el mensaje debajo con letras rojas, pero si el registro es exitoso deberia de poder entrar a otra pagina que no es el 'index.php' pero no lo hace .

He tratado colocando en el fichero php que consulto para saber si el registro fue exitoso, cosas como:

Código PHP:
echo "<script type='text/javascript'> document.location.href='prueba.php'</script> 
pero no me funciona, ya que se carga en el div que muestra las consultas realizadas con ajax y lo que quiero es que cargue absolutamente toda la pagina, como si estuviera haciendo click a un enlace. Tambien probe con el header, y el meta y nada de nada.

De ante mano gracias por sus ayudas!
  #2 (permalink)  
Antiguo 25/06/2008, 23:40
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 11 meses
Puntos: 834
Respuesta: redireccionar pagina usando php y ajax

No funciona porque para ejecutar scripts presentes en la respuesta Ajax, hay que tratarla previamente:
Código:
//prototipo que sirve para tratar la respuesta:
String.prototype.tratarResponseText=function(){
    var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
    var pat2=/\b\s+src=[^>\s]+\b/g;
    var elementos = this.match(pat) || [];
    for(i=0;i<elementos.length;i++) {
        var nuevoScript = document.createElement('script');
        nuevoScript.type = 'text/javascript';
        var tienesrc=elementos[i].match(pat2) || [];
        if(tienesrc.length){
            nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
        }else{
            var elemento = elementos[i].replace(pat,'$1');
            nuevoScript.text = elemento;
        }
        document.getElementsByTagName('body')[0].appendChild(nuevoScript);
    }
    return this.replace(pat,'');
} 
//...resto del código
if(aj.readyState==4){   document.getElementById('idCapa').innerHTML=aj.responseText.tratarResponseText();
}
Y con eso sí se interpreta el código javascript presente en la respuesta ajax

Última edición por Panino5001; 25/06/2008 a las 23:48
  #3 (permalink)  
Antiguo 26/06/2008, 10:13
 
Fecha de Ingreso: junio-2008
Mensajes: 8
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: redireccionar pagina usando php y ajax

Amigo un millon de gracias adapte el codigo que me facilitaste al que ya tenia y funciono excelente

Mi codigo (ajax.js) era el siguiente:

Código:
/* Función que crea un nuevo objeto ajax */

function nuevoAjax() {
	
	var xmlhttp = false;
	
	try {
		
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		
	}
	catch (e) {
		
		try {
			
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			
		} catch (E) {
			
			xmlhttp = false;
			
		}
		
	}
	
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		
		xmlhttp = new XMLHttpRequest();
		
	}
	
	return xmlhttp;
	
}

/* Función para cargar una página */
/* contenedorID: ID del contenedor donde se cargará la página */
/* URL: dirección de la página que se cargará en contenedor */
/* parametros: cadena de parametros a enviar (por defecto esta vacío). Ej: par1=val1&par2=val2 */
/* metodo: especifíca si los parámetros se enviarán a través del método GET o POST */

function cargarPagina(contenedorID, URL, parametros, metodo, animar) {
	
	var contenedor = document.getElementById(contenedorID);
	var ajax = nuevoAjax();
	
	if (animar == 1)
		contenedor.innerHTML = "<center><img src='imagenes/ajax-loader.gif'/><br/><p>Cargando...</p></center>";
		
	if (animar == 2)
		contenedor.innerHTML = "<center><img src='imagenes/ajax-loader2.gif'/></center>";
	
	if (parametros == null)
		parametros = "";
	
	if (metodo.toUpperCase() == "GET") {
	
		ajax.open("GET", URL + "?" + parametros, true);
		ajax.onreadystatechange = function() {
			
			if (ajax.readyState == 4) {
				
				contenedor.innerHTML = ajax.responseText.tratarResponseText();
				
			}
			
		}
		
		ajax.send(null);
		
	}
	else {
		
		ajax.open("POST", URL, true);
		ajax.onreadystatechange = function() {
			
			if (ajax.readyState == 4) {
				
				contenedor.innerHTML = ajax.responseText.tratarResponseText();
				
			}
			
		}
	
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(parametros);
		
	}
	
}
Y adapte lo que me facilitaste (separandolo un poco porque no se entendia mucho :p), quedando asi:

Código:
/* Función que crea un nuevo objeto ajax */

function nuevoAjax() {
	
	var xmlhttp = false;
	
	try {
		
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		
	}
	catch (e) {
		
		try {
			
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			
		} catch (E) {
			
			xmlhttp = false;
			
		}
		
	}
	
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		
		xmlhttp = new XMLHttpRequest();
		
	}
	
	return xmlhttp;
	
}

/* Función para cargar una página */
/* contenedorID: ID del contenedor donde se cargará la página */
/* URL: dirección de la página que se cargará en contenedor */
/* parametros: cadena de parametros a enviar (por defecto esta vacío). Ej: par1=val1&par2=val2 */
/* metodo: especifíca si los parámetros se enviarán a través del método GET o POST */

function cargarPagina(contenedorID, URL, parametros, metodo, animar) {
	
	var contenedor = document.getElementById(contenedorID);
	var ajax = nuevoAjax();
	
	if (animar == 1)
		contenedor.innerHTML = "<center><img src='imagenes/ajax-loader.gif'/><br/><p>Cargando...</p></center>";
		
	if (animar == 2)
		contenedor.innerHTML = "<center><img src='imagenes/ajax-loader2.gif'/></center>";
	
	if (parametros == null)
		parametros = "";
		
	//prototipo que sirve para tratar la respuesta:
	String.prototype.tratarResponseText = function() {
		
		var pat=/<script[^>]*>([\S\s]*?)<\/script[^>]*>/ig;
		var pat2=/\b\s+src=[^>\s]+\b/g;
		var elementos = this.match(pat) || [];
		
		for (i = 0; i < elementos.length; i++) {
			
			var nuevoScript = document.createElement('script');
			nuevoScript.type = 'text/javascript';
			var tienesrc=elementos[i].match(pat2) || [];
			
			if (tienesrc.length) {
				nuevoScript.src=tienesrc[0].split("'").join('').split('"').join('').split('src=').join('').split(' ').join('');
			}
			else {
				
				var elemento = elementos[i].replace(pat,'$1');
				nuevoScript.text = elemento;
				
			}
			
			document.getElementsByTagName('body')[0].appendChild(nuevoScript);
			
		}
		
		return this.replace(pat,'');
	} 

	
	if (metodo.toUpperCase() == "GET") {
	
		ajax.open("GET", URL + "?" + parametros, true);
		ajax.onreadystatechange = function() {
			
			if (ajax.readyState == 4) {
				
				contenedor.innerHTML = ajax.responseText.tratarResponseText();
				
			}
			
		}
		
		ajax.send(null);
		
	}
	else {
		
		ajax.open("POST", URL, true);
		ajax.onreadystatechange = function() {
			
			if (ajax.readyState == 4) {
				
				contenedor.innerHTML = ajax.responseText.tratarResponseText();
				
			}
			
		}
	
		ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		ajax.send(parametros);
		
	}
	
}
Con esto se soluciono mi problema. De nuevo mil gracias
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 01:15.