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

Redirigir en ajax

Estas en el tema de Redirigir en ajax en el foro de Frameworks JS en Foros del Web. Hola, con el script que muestro a continuación ejecuto un archivo php. El problema es que no se puede usar header porque incluye el contenido ...
  #1 (permalink)  
Antiguo 02/08/2011, 12:30
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 785
Antigüedad: 11 años, 10 meses
Puntos: 9
Redirigir en ajax

Hola, con el script que muestro a continuación ejecuto un archivo php. El problema es que no se puede usar header porque incluye el contenido en el resultado. Tampoco puedo usar script porque no sé porque razon no lo ejecuta. He intentado poner un echo que ponga "Cargando..." en el php y luego con un if si es "Cargando..." que redirija desde el ajax. Pero solo me funciona para el login de mi web, cuando lo ejecuto en el registro me muestra "Cargando..." pero no redirije.

Código Javascript:
Ver original
  1. function nuevoAjax(){
  2.     var xmlhttp=false;
  3.     try {
  4.     xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  5.     } catch (e) {
  6.     try {
  7.     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  8.     } catch (E) {
  9.     xmlhttp = false;
  10.     }
  11.     }
  12.  
  13.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  14.     xmlhttp = new XMLHttpRequest();
  15.     }
  16.     return xmlhttp;
  17. }
  18. //Submit form ajax
  19. function enviarFormulario(url, formid, divrespuesta){
  20.         var Formulario = document.getElementById(formid);
  21.         var longitudFormulario = Formulario.elements.length;
  22.         var cadenaFormulario = "";
  23.         var sepCampos;
  24.         sepCampos = "";
  25.         for (var i=0; i <= Formulario.elements.length-1;i++) {
  26.             cadenaFormulario += sepCampos+Formulario.elements[i].name+'='+encodeURI(Formulario.elements[i].value);
  27.             sepCampos="&";
  28.     }
  29.     peticion=nuevoAjax();
  30.     peticion.open("POST", url, true);
  31.     peticion.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
  32.     peticion.send(cadenaFormulario);
  33.     peticion.onreadystatechange = function() {
  34.           if (peticion.readyState == 4 && (peticion.status == 200 || window.location.href.indexOf ("http") == - 1)){
  35.                 if(peticion.responseText == "Cargando..."){
  36.                 window.location.href='./';
  37.                 }else{
  38.                 document.getElementById(divrespuesta).innerHTML = peticion.responseText;
  39.           }
  40.           }
  41.     }
  42. }

¿Alquien sabría decirme porqué o otro modo de hacerlo?
  #2 (permalink)  
Antiguo 02/08/2011, 23:31
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 12 años, 4 meses
Puntos: 1532
Respuesta: Redirigir en ajax

te recuerdo que cuando usas AJAX la respuesta es recibida por javascript, y no el navegador, por lo tanto los headers de redirección son ignorados, y los scripts en la respuesta se tratan como texto plano.

se supone que debes de evaluar los datos obtenidos en la respuesta, y redireccionar según ellos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 03/08/2011, 06:09
 
Fecha de Ingreso: enero-2009
Ubicación: España
Mensajes: 785
Antigüedad: 11 años, 10 meses
Puntos: 9
Respuesta: Redirigir en ajax

Creo que es lo que hago, si la respuesta es "Cargando..." que redirija.

Pero en el registro no me funciona

Etiquetas: ajax, contenido, php, post, redirigir, formulario
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 13:37.