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

Duda para redireccionar y mostrar resultado dentro de un div

Estas en el tema de Duda para redireccionar y mostrar resultado dentro de un div en el foro de Frameworks JS en Foros del Web. Hola a todos! Tengo el siguiente código... simple como verán: ajax.js Código: function Carga(url,id) { //Creamos un objeto dependiendo del navegador var objeto; if (window.XMLHttpRequest) ...
  #1 (permalink)  
Antiguo 23/08/2010, 18:25
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Duda para redireccionar y mostrar resultado dentro de un div

Hola a todos! Tengo el siguiente código... simple como verán:

ajax.js
Código:
function Carga(url,id)
{
	//Creamos un objeto dependiendo del navegador
	var objeto;
	if (window.XMLHttpRequest)
	{
		//Mozilla, Safari, etc
		objeto = new XMLHttpRequest();
	} 
	else if (window.ActiveXObject)
	{
		//Nuestro querido IE
		try {
			objeto = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try { //Version mas antigua
				objeto = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!objeto)
	{
		alert("No ha sido posible crear un objeto de XMLHttpRequest");
	}
	//Cuando XMLHttpRequest cambie de estado, ejecutamos esta funcion
	objeto.onreadystatechange=function()
	{
		cargarobjeto(objeto, id)
	}
	objeto.open('GET', url, true) // indicamos con el método open la url a cargar
    objeto.send(null) // Enviamos los datos con el metodo send
}

function cargarobjeto(objeto, id)
{
	if (objeto.readyState == 4) //si se ha cargado completamente
		document.getElementById(id).innerHTML=objeto.responseText
	else //en caso contrario, mostramos un gif simulando una precarga
		document.getElementById(id).innerHTML='<img src="js/ajaxloader.gif" alt="cargando" />'
}
Y aquí el link que llama a la página de alta de articulos
Código HTML:
// CON ESTE LINK LLAMO A LA PAGINA PARA DAR DE ALTA
<a href="javascript:Carga('alta.php','contenedor');">Alta de articulo</a>

<div id="contenedor" style="margin-top:10px;"></div> 
Por otro lado, la página ALTA.PHP la armé de esta manera:
Código PHP:
<FORM ACTION="graba.php" METHOD="POST">
<input name="articulo" type="text" id="articulo">
<input type="submit" name="submit" value="Dar de Alta">

<div id="resultado"><?php include('lista.php');?></div>
GRABA.PHP
Código PHP:
$con bla bla bla...;
    
mysql_select_db(bla bla bla...);

    
$Sql="INSERT INTO bla bla bla...;

    mysql_query($Sql,$con);
    header("
locationalta.php");
    exit; 
El tema es así... si ejecuto SOLAMENTE la página ALTA.PHP, cada vez que doy de alta un artículo, el header("location: alta.php"); hace que vuelva a la página ALTA.PHP y me muestre un listado de lo que hay en la BDD mediante el include que hice. Así funciona...

Ahora... ¿cómo hago para que haga todo esto dentro del <div id="contenedor"></div> que se encuentra en el INDEX.PHP? Porque si al header lo modifico y le pongo header("location: index.php"); me vuelve al INDEX.PHP pero el div me aparece vacío y quisiera que aparezca otra vez ALTA.PHP

Espero se haya comprendido.

Gracias por su tiempo y saludos.

Marx.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #2 (permalink)  
Antiguo 24/08/2010, 09:15
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Duda para redireccionar y mostrar resultado dentro de un div

Bueno no entiendo la estructura de tu web pero lo único que te puedo decir es que la redireccion lo hagas dentro de tu funcion ajax... ¿comó? pues con el responseText de ajax.

en tu script GRABA.PHP al terminar de guardar en tu bd mandas un status:

Código PHP:

$con 
bla bla bla...; 
    
mysql_select_db(bla bla bla...); 

    
$Sql="INSERT INTO bla bla bla..."

    
mysql_query($Sql,$con); 
    echo 
"guardo"

Ese "guardo" es el responseText es la respuesta del servidor que recupera tu funcion ajax, entonces en tu funcion deberías agregar algo asi:


Código:
function cargarobjeto(objeto, id)
{
	if (objeto.readyState == 4){ //si se ha cargado completamente
		document.getElementById(id).innerHTML=objeto.responseText;
	
		if (objeto.responseText == "guardo"){
			document.location.href='mipagina.html';
		}
		else{
			alert('error inesperado');
		}
		
	}else {//en caso contrario, mostramos un gif simulando una precarga
		document.getElementById(id).innerHTML='<img src="js/ajaxloader.gif" alt="cargando" />';
	}
}
__________________
Quitenme la vida pero no la bebida.
  #3 (permalink)  
Antiguo 24/08/2010, 12:00
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Duda para redireccionar y mostrar resultado dentro de un div

Gracias amigo por escribir pero no funcionó. No guarda los datos en la bdd y no me redirige al index.php (por supuesto cambié mipagina.html por index.php)
El tema es así… capáz no se pueda hacer.

Tengo una página INDEX.PHP con un menú lateral con links simples y por medio de ajax me muestra el contenido de cada link en un div que se encuentra en la misma página index.php

Al presionar el link ALTA me trae al div contenedor (de la página principal) la página ALTA.PHP que es un formulario de 2 campos.

Esta página cargada en en div contenedor, al presionar submit envía los datos de los campos a otra página GRABAR.PHP que se encarga de grabar los mismos en la bdd.

La página GRABAR.PHP es esta:

Código PHP:
if(isset($_POST['submit'])){

$articulo1 trim($_POST['articulo1']);
$articulo2 trim($_POST['articulo2']);

    
// conexion a la base
    
$con bla bla bla;
    
mysql_select_db(bla bla bla);

    
$Sql="INSERT INTO …….";

    
mysql_query($Sql,$conexion);
    
header("location: index.php");
    exit;

De esta manera, graba los datos y mediante el HEADER LOCATION me devuelve a la página principal, pero el div contenedor está vacío y quisiera que vuelva a aparecer en el div contenedor del INDEX.PHP, la página ALTA.PHP para seguir cargando datos. ¿se puede hacer esto?

De otra manera, tendría que volver a presionar el link ALTA para que vuelva a cargar el formulario en el div contenedor del index.

Espero haber sido claro para que uds. puedan entenderme.

Gracias y saludos.

----------------------------------------

mmmmmmm... descubrí algo pero NO es lo que necesito:

Si en el index.php reemplazo ajax y al <div contenedor> por un IFRAME y hago todo desde html, no se resetea toda la página al momento de grabar los datos y solo se resetea lo que haya en el IFRAME. De esta manera me mantiene VISIBLE el formulario para cargar todos los datos que yo quiera pero justamente no quisiera usar este IFRAME.

¿Se puede hacer todo esto con ajax?

Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Última edición por marx-pola; 24/08/2010 a las 12:36
  #4 (permalink)  
Antiguo 24/08/2010, 14:01
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 2 meses
Puntos: 9
Respuesta: Duda para redireccionar y mostrar resultado dentro de un div

A menos que todo el contenido de la web alta.php sea el innerHTML que muestres al final de guardar en la BD.
__________________
Quitenme la vida pero no la bebida.
  #5 (permalink)  
Antiguo 25/08/2010, 12:27
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Duda para redireccionar y mostrar resultado dentro de un div

perdon cesarpunk... pero no comprendi lo que me quieres decir.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.
  #6 (permalink)  
Antiguo 27/08/2010, 15:13
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Duda para redireccionar y mostrar resultado dentro de un div

Cita:
Iniciado por cesarpunk Ver Mensaje
A menos que todo el contenido de la web alta.php sea el innerHTML que muestres al final de guardar en la BD.
Lo que no entiendo es xq si le agrego un iframe al index funciona y solo se actualiza lo que hay dentro de ese iframe y si lo llamo con ajax no.
¿Hay alguna manera de que puedan explicarme como hacer esto?

Gracias.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Última edición por marx-pola; 27/08/2010 a las 16:26
  #7 (permalink)  
Antiguo 29/08/2010, 20:09
 
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 630
Antigüedad: 21 años, 10 meses
Puntos: 1
Respuesta: Duda para redireccionar y mostrar resultado dentro de un div

Parece que no se puede con ajax... así que lo solucioné SIN ajax. Lo hice en php usando switch e include.
__________________
"Todo lo que somos es el resultado de lo que hemos pensado". Budda.

Etiquetas: ajax, redireccionar, resultados
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:30.