Foros del Web » Programando para Internet » Javascript »

Procesar un formulario dentro de un div y mostrar su resultado en el mismo div

Estas en el tema de Procesar un formulario dentro de un div y mostrar su resultado en el mismo div en el foro de Javascript en Foros del Web. Hola buenas noches a tod@s, les escribo esto porque ya no sé que más hacer para lograr lo que quiero. No sabía muy bien como ...
  #1 (permalink)  
Antiguo 10/12/2012, 18:47
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 5 meses
Puntos: 0
Procesar un formulario dentro de un div y mostrar su resultado en el mismo div

Hola buenas noches a tod@s, les escribo esto porque ya no sé que más hacer para lograr lo que quiero. No sabía muy bien como explicarlo en el título, pero espero poder aclarar algo más en esta explicación (soy bastante novato en este lenguaje).

Tengo un index.php con 3 div (menú, contenido, pie). En el div="contenido" cargo automáticamente registro.php (con <body onload='.......'>), de modo que se queda en medio de la página y será este div el que vaya cambiando en todo momento (los div menú y pie serán estáticos).

A la hora de navegar dentro de ese div no tengo problema, uso ajax con una función tal que así (en el fichero ajax.js):

Código:
var peticion = false;
if (window.XMLHttpRequest) {
  peticion = new XMLHttpRequest();
} else if (window.ActiveXObject) {
  peticion = new ActiveXObject("Microsoft.XMLHTTP");
}

function cargarExterno(datos,divID) {
  if(peticion) {
   var obj = document.getElementById(divID);
   peticion.open("GET", datos);
   peticion.onreadystatechange = function() {
  if (peticion.readyState == 4) {
   obj.innerHTML = peticion.responseText;
  }
}
peticion.send(null);
}
}
A esta función la llamo, por ejemplo, desde un simple <a href=cargarExterno('nueva_alta.php','contenido')>

Hasta ahí bien, pero el problema me viene cuando quiero seguir esa misma dinámica y tengo que procesar un formulario que me devuelva el resultado dentro del mismo div="contenido"...

He probado muchas cosas pero ninguna me termina de hacer lo que yo busco. He hecho varias pruebas con jquery y nada. Como por ejemplo esta función en fichero .js:

Código:
$(function(){
    $('#form_registro').submit(function(){
        var data = $(this).serialize();

        $.post('alta.php', data, function(respuesta){
            $('#contenido').find('dl').slideUp("normal", function(){
                $('#contenido').html(respuesta);
            })
        });
        
        return false;
    });
});
¿Cómo podría enviar el resultado de un formulario a ese mismo div, teniendo en cuenta que lo estoy ejecutando dentro de una página.php que está mostrada a su vez dentro de un div="contenido" de la página principal? No sé si me estoy explicando o lo lío cada vez más, pero es que es eso realmente lo que busco. Si alguien tiene dudas sobre lo que quiero, que me pregunte e intentaré explicarme mejor.

La verdad es que no sé si el tema está correctamente situado en este apartado del foro, pero lo he colocado aquí porque es donde más encaja, desde mi humilde punto de vista. Si este no es el apartado correcto, pido disculpas, así como también por si no me he mostrado todo lo claro en la explicación como me hubiese gustado.

Muchas gracias a todos de antemano por vuestras respuestas. Saludos.
  #2 (permalink)  
Antiguo 10/12/2012, 19:19
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Procesar un formulario dentro de un div y mostrar su resultado en el mismo

En primer lugar, bienvenido a FDW @graygler

Y sí, parece que estás liando las cosas.

si usas el onload del body para cargar registro.php en el div con ajax, ya estás havciendo algo demás, solo necesitás

<div id="contenido">
<?php include('registro.php');
</div>

Aqui, aunque no lo especificas supongo que registro.php contiene un form para registrarse (si no no entiendo de donde viene el form que hablás)

ahora si ese mismo form lo procesas con ajax el contenido del div se reemplazaría por el responseText del php que procese el form.

Lo que me pregúnto es una vez hecho eso, desde dónde vas a volver a cambiar el contenido del div id="contenido", desde el menú tal vez?

quizás lo más lógico es que ppongas el include del registro.php en otro div, proceces el form con ajax, y si no hay error, mandes la respuesta aa contenido y ocultes div que contiene el form de registro cambiando su propiedad css display


Se entiende?

Salu2
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 10/12/2012, 19:38
 
Fecha de Ingreso: diciembre-2012
Mensajes: 2
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Procesar un formulario dentro de un div y mostrar su resultado en el mismo

Antes que nada, muchas gracias emprear por la bienvenida y más aún por que te hayas molestado en responder.

Cita:
Iniciado por emprear Ver Mensaje
si usas el onload del body para cargar registro.php en el div con ajax, ya estás havciendo algo demás, solo necesitás

<div id="contenido">
<?php include('registro.php');
</div>
OK, eso sí que lo tendré en cuenta para modificarlo, no sabía que se podía hacer así también. Lo hice así porque fue como vi que alguien por el foro lo había hecho.

Cita:
Iniciado por emprear Ver Mensaje
Aqui, aunque no lo especificas supongo que registro.php contiene un form para registrarse (si no no entiendo de donde viene el form que hablás)
Exactamente, registro.php tiene un form con el que doy de alta a los clientes.

Cita:
Iniciado por emprear Ver Mensaje
ahora si ese mismo form lo procesas con ajax el contenido del div se reemplazaría por el responseText del php que procese el form.
Aquí es donde no entiendo qué hacer, ya que no me reemplaza el div en cuestión, sino se me muestra en una página para él solo, quitando el div menú y pie.

Cita:
Iniciado por emprear Ver Mensaje
Lo que me pregúnto es una vez hecho eso, desde dónde vas a volver a cambiar el contenido del div id="contenido", desde el menú tal vez?
Exacto, desde el menú cambiaré los distintos ficheros .php a cargar en div="contenido".

Cita:
Iniciado por emprear Ver Mensaje
quizás lo más lógico es que ppongas el include del registro.php en otro div, proceces el form con ajax, y si no hay error, mandes la respuesta aa contenido y ocultes div que contiene el form de registro cambiando su propiedad css display

Se entiende?
Creo que sí te he entendido, aunque no sé si esa es la forma más "ortodoxa" de implementarla, jeje. De todas formas la probaré (si es que logro hacer bien todo lo que me dices) y ya pondré por aquí si me resultó o no.

No obstante, te doy las gracias nuevamente por haber mostrado interés por mi duda.

Un saludo.
  #4 (permalink)  
Antiguo 10/12/2012, 19:53
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Procesar un formulario dentro de un div y mostrar su resultado en el mismo

Creo que la opción de cargar el form en otro div te va a resultar lo más práctico
luego usá tu función ajax, salvo que esta vez
peticion.open("GET", datos);
debería ser
peticion.open('GET','pagina1.php?nombre='+elnombre +'&apellido='+elapellido, true);

es decir los "datos" serían la url del php(action del form) + los parámetros de la query_string, las variables elnombre y elapellido las obtenés document.getElementById para esos campos

y al sacar el responseText en el div contenido haces
document.getElementById(id_quetiene_el_include).st yle.display = "none";

Ojo que es tan solo un ejemplo

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: ajax, formulario, html, jquery, js, php, procesar
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 20:21.