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>
De ante mano gracias por sus ayudas!
| |||
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: De ante mano gracias por sus ayudas! |
| ||||
Respuesta: redireccionar pagina usando php y ajax No funciona porque para ejecutar scripts presentes en la respuesta Ajax, hay que tratarla previamente:
Código:
Y con eso sí se interpreta el código javascript presente en la respuesta ajax //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(); }
__________________ Fast, lightweight, cross-platform framework for building incredible, powerful JavaScript applications Última edición por Panino5001; 25/06/2008 a las 23:48 |
| |||
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:
Y adapte lo que me facilitaste (separandolo un poco porque no se entendia mucho :p), quedando asi:/* 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); } }
Código:
Con esto se soluciono mi problema. De nuevo mil gracias /* 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); } } |