Foros del Web » Programando para Internet » Javascript »

Problema recarga de pagina

Estas en el tema de Problema recarga de pagina en el foro de Javascript en Foros del Web. Hola, quisiera a ver si me pueden ayudar. Estoy haciendo un apartado en una web este tiene un menu: Prefencias, Mi cuenta.... vale para no ...
  #1 (permalink)  
Antiguo 19/06/2012, 18:12
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años, 1 mes
Puntos: 0
Problema recarga de pagina

Hola, quisiera a ver si me pueden ayudar.
Estoy haciendo un apartado en una web este tiene un menu: Prefencias, Mi cuenta.... vale para no tener que recargar la pagina cada vez que pulso un link, utilice el siguiente codigo:

Funcion
Cita:
function Enviar(_pagina,capa) {
var ajax;
ajax = ajaxFunction();
ajax.open("POST", _pagina, true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

ajax.onreadystatechange = function() {
if (ajax.readyState==1){
document.getElementById(capa).innerHTML = " Espere por favor...";
}
if (ajax.readyState == 4) {

document.getElementById(capa).innerHTML=ajax.respo nseText;
}}

ajax.send(null);
}
html donde utilizo la funcion
Cita:
<a class="li_menu_a" title="Preferencias" href="javascript:Enviar('usuario_perfil/miperfil/modificar_perfil.php','contenido')">Preferencias</a>

<a class="li_menu_a" title="miperfil" href="javascript:Enviar('usuario_perfil/miperfil/modificar_perfil.php','contenido')">miperfil</a>
Con esto hago cargar una pagina en la DIV al darle al link.
Vale, ¿cual es el problema? Tengo un apartado que es mi perfil es un formulario para poder modificar el perfil del usuario realizado con php. Cuando termino de modificar el perfil le doy al botón enviar y me recarga la pagina entera, lo que me provoca que cargue la pagina por defecto al principio( se sale del la sección seleccionada mi perfil) y los datos del usuario no se cambian o no muestre mensajes de error por ejemplo de contraseña demasiada corta". Paso datos por post por si os aclara algo.
Espero haberme explicado bien, para cualquier duda preguntad.
Gracias de antemano
  #2 (permalink)  
Antiguo 19/06/2012, 18:54
Avatar de fjrueda  
Fecha de Ingreso: marzo-2008
Ubicación: Bucaramanga
Mensajes: 313
Antigüedad: 16 años, 1 mes
Puntos: 35
Respuesta: Problema recarga de pagina

juanjexus ...

Si el enviar lo hace desde un input tipo submit es muy logico que se reenvie completa, es asi o estoy mal ?? ....
  #3 (permalink)  
Antiguo 20/06/2012, 07:32
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema recarga de pagina

Cita:
Iniciado por fjrueda Ver Mensaje
juanjexus ...

Si el enviar lo hace desde un input tipo submit es muy logico que se reenvie completa, es asi o estoy mal ?? ....
Si es así, ¿pero de que otra forma lo puedo hacer entonces?
  #4 (permalink)  
Antiguo 20/06/2012, 07:36
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Problema recarga de pagina

Cita:
Iniciado por juanjexus Ver Mensaje
Si es así, ¿pero de que otra forma lo puedo hacer entonces?
para eso usas

event.preventDefault()

o

return false;

al final de la función, después de la respuesta AJAX, al final de la invocación del onclick del botón, en el onsubmit del form, depende de cómo lo tengas planteado.

Código HTML:
Ver original
  1. <input type="submit" onclick="Enviar(pagina,capa,event); return false;">

Código Javascript:
Ver original
  1. function Enviar(_pagina,capa,e) {
  2. var ajax;
  3. ajax = ajaxFunction();
  4. ajax.open("POST", _pagina, true);
  5. ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  6.  
  7. ajax.onreadystatechange = function() {
  8. if (ajax.readyState==1){
  9. document.getElementById(capa).innerHTML = " Espere por favor...";
  10. }
  11. if (ajax.readyState == 4) {
  12.  
  13. document.getElementById(capa).innerHTML=ajax.respo nseText;
  14.  
  15.  
  16. }}
  17.  
  18. ajax.send(null);
  19.  
  20. e.preventDefault();
  21. }

Un saludo.
  #5 (permalink)  
Antiguo 20/06/2012, 08:04
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema recarga de pagina

Hola dontexplain,

He estado mirando lo que me dices, la verdad que no lo entiendo bien del todo es la primera vez que me pongo a trabajar con esto y he estado mirando en google pero sin éxito.
Bueno el resultado de momento es que le doy al botón de input con el evento onclick que me indicas pero se me redirige a la pagina por defecto del los apartados.
No se en que fallo.

Gracias por la paciencia
  #6 (permalink)  
Antiguo 20/06/2012, 08:15
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Problema recarga de pagina

Trataré de explicarlo para que lo entiendas:

Existen eventos predeterminados, uno de ellos es el onsubmit y se produce cuando se clica sobre un botón de tipo submit. La acción por defecto de ese evento es redirigir a la página determinada en el formulario mediante action (si no hay ninguna especificada se recarga la misma).

La cuestión es que cualquier evento javascript (el alias es event) tiene propiedades y métodos. Las propiedades son todos los datos del evento (por ejemplo si pulsas sobre un botón una propiedad podría ser el momento exacto en que pulsaste tal botón), los métodos manejan el evento, y manejar puede incluir parar su ejecución.

Si haces

<input type="submit" onclick="cualquiera()">

primero se ejecuta la función cualquiera() y más tarde el evento predeterminado, y como el evento predeterminado, como dije antes, es el envío del formulario, sólo tienes que parar tal evento, y para eso existe un método

event.preventDefault()

Para poder manejar el objeto event es necesario que lo pases como parámetro de la función

cualquiera(parametro1,parametro2,event)

de modo que

function cualquiera(p1,p2,e){

}

ahora, dentro de la función puedes manejar el objeto event (que es e) y por tanto invocar

e.preventDefault()

Un saludo
  #7 (permalink)  
Antiguo 20/06/2012, 09:24
 
Fecha de Ingreso: marzo-2012
Mensajes: 14
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema recarga de pagina

Muchas gracias por la explicación !!! eres un maestro. aAhora le doy al botón y no me recarga la pagina, pero ahora me surge otra cosa.

Al darle al botón con el evento onclick y llamar al a funcion anterior, lo que estoy haciendo es parar la recarga, por lo que no estoy enviando los datos por post del formulario y no puedo comprobar el formulario, por lo menos ahora es lo que me ocurre.

Mil gracias!!!
  #8 (permalink)  
Antiguo 20/06/2012, 19:04
Avatar de fjrueda  
Fecha de Ingreso: marzo-2008
Ubicación: Bucaramanga
Mensajes: 313
Antigüedad: 16 años, 1 mes
Puntos: 35
Respuesta: Problema recarga de pagina

Seguramente esta colocando el e.preventDefault() dentro de alguna validacion o antes de que efectue el http del ajax.

Muestre algo de lo que acertadamente le explico dontexplain y que usted ya corrigio, para revisar y estar seguros.

Etiquetas: ajax, php, post
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 00:37.