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

Aplicacion php ajax

Estas en el tema de Aplicacion php ajax en el foro de Frameworks JS en Foros del Web. el siguiente script: Código PHP: <?php  session_start (); // varias lineas que no interesan header ( "Location:" . $_SERVER [ 'HTTP_REFERER' ]); ?> Este me devolvia siempre al archivo que ...

  #1 (permalink)  
Antiguo 01/12/2006, 10:57
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Aplicacion php ajax

el siguiente script:

Código PHP:
<?php 
session_start
();
// varias lineas que no interesan
header("Location:".$_SERVER['HTTP_REFERER']);
?>
Este me devolvia siempre al archivo que lo llamaba, pero cuando lo pongo dentro de Ajax me vuelve al index (que es la pagina contenedora de toda la aplicacion), espero haberme explicado, gracias y saludos
  #2 (permalink)  
Antiguo 03/12/2006, 17:42
 
Fecha de Ingreso: diciembre-2006
Mensajes: 2
Antigüedad: 18 años
Puntos: 0
xq te toma el referente que contiene a la página cargada
o sea si tu página principal se llama index.php y cargas todo dentro de ella el referente es index.php
  #3 (permalink)  
Antiguo 08/12/2006, 06:57
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Hola.

Puedes recoger el valor del referer en javascript y se lo pasas a PHP en el primer request AJAX:
Código:
var desde = document.referrer;
//juraría que es con dos erres, si no, le quitas una...
"http://loquesea.com/loquesea.php?origen="+desde;
Lo recibes en PHP con $_GET $_POST o $_REQUEST y si te va a hacer falta despues, lo asignas a una variable de sesión, por ejemplo
Código PHP:
$_SESSION['origen']=$_REQUEST['origen']; 
  #4 (permalink)  
Antiguo 08/12/2006, 11:58
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
NO entendi muy bien

Tu sabes que no entendi muy bien lo de manejar el referer, me podias dar alguna idea mas amplia, gracias
  #5 (permalink)  
Antiguo 09/12/2006, 12:41
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Si quieres probar el referrer con javascript crea estos dos archivos html o php:

referrer1.html
Código HTML:
<html>
<head>
<script>
location = "referrer2.html";
</script>
</head>
<body>
</body>
</html> 
referrer2.html
Código HTML:
<html>
<head>
<script>
var llamada_desde = document.referrer;
alert(llamada_desde);
</script>
</head>
<body>
</body>
</html> 
Y carga en el navegador, referrer1.html. Este te envía a referrer2.html y este te muestra la página que la ha llamado, el referrer, claro.

Para tu caso, si en la página que carga una url con AJAX haces esto:
Código:
//Hacemos una cadena tipo "?ref=loquesea" para pasar un parámetro en la url a la que accedemos con AJAX
var el_referrer = "?ref="+document.referrer;
//Donde describimos la url que se cargará le agregamos el parámetro ref
ajax.open("GET","loquesea.php"+el_referrer);

Luego en loquesea.php podría poner:

Código PHP:
<?php 
session_start
();
// varias lineas que no interesan
header("Location:".$_GET['ref']);
?>
  #6 (permalink)  
Antiguo 16/12/2006, 07:17
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

hice lo que me aconsejaste pero tengo el siguiente problema;

La navegacion de mi sitio es: pagina1, llama a la pagina2, y debe volver a la pagina1, pero con la solucion anterior me quedo en la pagina2, es decir que no me esta direccionado a pagina 1 nuevamente; es mas me abre una nueva ventana con la pagina1, ni siquiera me la carga en el contenedor de Ajax.

Los cambios que hice son los siguientes:

Codigo Ajax (*************esta marcado asi para ver donde realice los cambios en AJAX)
Código:
// Documento JavaScript
// Esta función cargará las paginas
function llamarasincrono(url, id_contenedor){
var pagina_requerida = false
if (window.XMLHttpRequest) {// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest()
} else if (window.ActiveXObject){ // pero si es IE
try {
pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){ // en caso que sea una versión antigua
try{
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
pagina_requerida.onreadystatechange=function(){ // función de respuesta
cargarpagina(pagina_requerida, id_contenedor)
}
//pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
var el_referre = "?ref="+document.referrer;
pagina_requerida.open('GET', "agregacar.php"+el_referrer, true)
//********************* las dos lineas anteriores fueron las del cambio*********************************
pagina_requerida.send(null)
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina(pagina_requerida, id_contenedor){
if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText
}
Codigo PHP agregacar.php

Código PHP:
<?php 
session_start
();
// lineas que no interesan
header("Location:".$_GET['ref']);
?>
  #7 (permalink)  
Antiguo 16/12/2006, 11:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Hola, en esta línea te falta una "r" en el nombre de la variable:
Cita:
Iniciado por jprolando Ver Mensaje
[php]
var el_referre = "?ref="+document.referrer;
[php]
Prueba a poner un alert para ver cual es el referrer que le envías:
Código PHP:
var el_referrer "?ref="+document.referrer;
alert(el_referrer);
//debería ser 'http://tudominio.com/index1.php' 
y otra cosa, si en donde pones "//líneas que no interesan" haces algún "echo", o sea, le envías algo al navegador, no puedes enviar luego un header
  #8 (permalink)  
Antiguo 16/12/2006, 12:39
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Al hacer los cambios pierdo la accion de ajax

Es decir los vinculos de carga de pagina no me funcionan; y en el archivo php no tengo ningun echo.

No cargo nada en los contenedores de pagina de Ajax.
Gracias y seguiremos en la busqueda
  #9 (permalink)  
Antiguo 22/12/2006, 07:09
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Sigo todavia con el problema

Al hacer los cambios expuestos en respuestas anteriores, me quita toda la navegacion de Ajax, por mas vuelta que le estoy dando no logro dar con el problema (alguna idea de navegacion en alguna pagina que me permita profundizar mas en el tema).

Desde ya muchas gracias, chau y saludos
  #10 (permalink)  
Antiguo 23/12/2006, 03:55
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Hola jp:

Vamos a ver, si lo que quieres es cargar datos en un elemento de la página, no puedes hacer un header("Location: loquesea.php"); porque esto no devuelve datos para incorporar en un elemento de la página que lo llamó.
Para recibir datos en la página que lo llamó con ajax deberás enviar algo en el cuerpo de la respuesta, no en la cabecera/header.
header lo que hace es redireccionar a la página que le pongas sin devolver datos en el cuerpo de la respuesta.

A ver si puedes aclarar que quieres hacer con ajax:

1.- Quieres cargar datos en un elemento de pagina2
2.- Quieres que te redireccione a la pagina1 (no haría falta ajax)
3.- Quieres cargar el contenido de la pagina1 en un elemento/contenedor de pagina2 (pagina1 no podría llevar elementos como <html>, <head> o <body> porque ya están en pagina2)
4.- Quieres cargar parte de pagina1 en pagina2
  #11 (permalink)  
Antiguo 23/12/2006, 13:02
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

mira el asunto es asi:

Yo tengo la pagina principal llamada Index, esta a su vez tiene una parte donde cargo distintas paginas (un contenedor llamado contenidos). Este contenedor cambia con distintas paginas PHP, esta pagina php a su vez tiene un boton que al activar con un clic llama a otra pagina php (que esta solo trabaja del lado del servidor, es decir no muestra nada en la interfaz del usuario web, solo agrega datos a un array), esta pagina de agregar tiene un header que envia a la pagina que la llamo, es ahi donde se me arma el problema porque el contenedor vuelve a la pagina principal y no a la pagina php que mostraba con el boton que activa esa otra pagina.

Bueno no se si aclare el problema, pero estamos en contacto, gracias por todo
  #12 (permalink)  
Antiguo 24/12/2006, 04:44
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Postea el código de la página esa que dices con el botón que hace la llamada
  #13 (permalink)  
Antiguo 26/12/2006, 06:04
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

el archivo que se carga en el contenedor es este:
Código PHP:
<?
    session_start
();
    include(
"config.php");
    
$link=conectar_BD();
?>
<html>
<head>
<title>Compras Productos</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css">

   a {color:#858585;text-decoration:none;font-family: Tahoma;font-size: 10px}
   td {color:#858585;text-decoration:none;font-family: Tahoma;font-size: 10px}
   
</style>
</head>
<body bgcolor="#ffffff">

</head>

<?
$registros 
4;

if (!
$pagina){
    
$inicio 0;
    
$pagina 1;
}
else{
    
$inicio = ($pagina 1) * $registros;
}
$carro=$_SESSION['carro'];
$result=mysql_query("SELECT * FROM $name_tb[productos] where codigoweb1=1 and codigoweb2=1"); 

$total_registros mysql_num_rows($result);

$result=mysql_query("SELECT * FROM $name_tb[productos] where codigoweb1=1 and codigoweb2=1 limit $inicio, $registros"); 

$total_paginas ceil($total_registros $registros);

    if (
$row mysql_fetch_assoc($result))
    {
        echo 
"<table border=0 cellpadding=8 cellspacing=0> \n";
        
$color='#FFFFFF';
            do {
                 echo 

                     <tr bgcolor=\"$color\"> 
                           <td>"
;
                        include(
"pepe.php");
                echo 
"         
                        </td> 
                        <td>  
                            $row[articulo] 
                        </td> 
                          <td> 
                            $$row[p_12] 
                        </td>  
                          <td bgcolor=$color> 
                            <a href='contenidos/fotograndefilma.php' target='_blank'><img src='/imagenes/$row[foto]'> </a>
                        </td> 
                          <td bgcolor=$color> 
                            <a href='contenidos/detalleFilma.php' target='_blank'><img src='/imagenes/$row[info]'> </a>
                        </td>
                        <td> 
                            <img src='/imagenes/$row[ruta]'> 
                        </td>
                        <td> 
                            <!--Esta es linea vacia para que no queden tan cerca--> 
                        </td>                                                     
                    </tr> 
                    "
;
                
$color=('#FFFFFF'==$color)?'FFFFFF':'#FFFFFF';
                } while (
$row mysql_fetch_assoc($result));
             
               echo 
"</table> \n"
        } else { 
            echo 
"¡ No se ha encontrado ningún registro !"
        }         

    if(
$total_registros) {
        echo 
"<center>";
        if((
$pagina 1) > 0) {
            echo 
"<a href='javascript:llamarasincrono(\"contenidos/ver_productos_1_1.php?pagina=".($pagina-1)."\", \"contenidos\");'>< Anterior</a> ";
        }
        
        for (
$i=1$i<=$total_paginas$i++){ 
            if (
$pagina == $i
                echo 
"<b>".$pagina."</b> "
            else
                echo 
"<a href='javascript:llamarasincrono(\"contenidos/ver_productos_1_1.php?pagina=$i\", \"contenidos\");'>$i</a> "
        }
        
        if((
$pagina 1)<=$total_paginas) {
            echo 
"<a href='javascript:llamarasincrono(\"contenidos/ver_productos_1_1.php?pagina=".($pagina+1)."\", \"contenidos\");'>Siguiente ></a>";
        }
        
        echo 
"</center>";
        
    }



    
mysql_free_result($result); 
    
mysql_close($link);  
?>
</body>
</html>
En el llamo a pepe.php, que es este otro:
Código PHP:
    <?php if($carro[md5($row['id'])]['identificador']!=md5($row['id'])){?>
    <a href="contenidos/agregacar.php?<?php echo SID ?>&id=<?php echo $row['id'];?>">
    <img src="/imagenes/comprar.gif" border="0" title="Agregar al Carrito"></a>
    <?php }else{?>
    <img src="/imagenes/agregado.gif" border="0" title="Ya lo selecciono"></a><?php }?>
Este a su vez carga este otro (el que agrega al carro (array)):

Código PHP:
<?php 
session_start
();
extract($_REQUEST);

include(
'config.php');
$link conectar_BD();

if (!
$cantidad) {$cantidad=1;}

$qry=mysql_query("select * from $name_tb[productos] where id='".$id."'");
$row=mysql_fetch_array($qry);

$carro=$_SESSION['carro'];

$carro[md5($id)]=array('identificador'=>md5($id),'cantidad'=>$cantidad,'articulo'=>$row['articulo'],'contado_p'=>$row['contado_p'],'p_6'=>$row['p_6'],'p_12'=>$row['p_12'],'p_18'=>$row['p_18'],'id'=>$id);

$_SESSION['carro']=$carro;

header("Location:".$_SERVER['HTTP_REFERER']);
?>
Y las paginas las cargos con la siguiente funcion de AJAX:

Código:
// Documento JavaScript
// Esta función cargará las paginas
function llamarasincrono(url, id_contenedor){
var pagina_requerida = false
if (window.XMLHttpRequest) {// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest()
} else if (window.ActiveXObject){ // pero si es IE
try {
pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){ // en caso que sea una versión antigua
try{
pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
pagina_requerida.onreadystatechange=function(){ // función de respuesta
cargarpagina(pagina_requerida, id_contenedor)
}
pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
pagina_requerida.send(null)
}
// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina(pagina_requerida, id_contenedor){
if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText
}
Bueno espero que sirva, y gracias nuevamente
  #14 (permalink)  
Antiguo 26/12/2006, 08:27
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Hola jprolando.
Cuando tenga tiempo te miro algo pero de pronto lo que veo es que dentro de un contenedor del documento quieres cargar otro documento completo con <html><head><body>... y no sé si el navagador lo hace pero creo que no debería...

Por otro lado cuando envías: header("Location: algo.php"); en AJAX no recibirás un estado 200 si no que posiblemente recibas un 302 REDIRECT o algo así.

Prueba a ver que te da esto:

Código:
if (pagina_requerida.readyState == 4) {
   alert(pagina_requerida.statusText + " : " + pagina_requerida.status);
}

Última edición por vengava; 26/12/2006 a las 09:26
  #15 (permalink)  
Antiguo 26/12/2006, 10:17
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

al colocar el codigo que me diste, me devuelve un ok 200.
  #16 (permalink)  
Antiguo 27/12/2006, 12:12
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Pues a mí me devuelve un código HTTP 302. No sé como maneja esto internamente AJAX, pero el caso es que el header location es una cabecera HTTP y el cuerpo de la página viene vacío:

Create un prueba.php:
Código PHP:
<?
   header
("Location: http://www.google.com");
?>
Si estás en windows haz lo siguiente:
inicio --> ejecutar --> teclea cmd --> pulsa ENTER --> Escribe lo siguiente

telnet localhost 80 [ENTER]
GET /prueba.php HTTP/1.1 [ENTER]
HOST: localhost [ENTER 2 veces]

A mí me devuelve esto:

HTTP/1.1 302 Found
Date: Wed, 27 Dec 2006 18:03:08 GMT
Server: Apache
Location: http://www.google.com
Content-Length: 0
Content-Type: text/html; charset=ISO-8859-1

Y como ves, esto sólo informa al navegador a qué url tiene que hacer la petición.
Probablemente el objecto XMLHttpRequest llame a google (en este caso) en los estados anteriores a readystate==4, pero no lo sé.

Has probado a hacer un alert(ajax.responseText) o a cargar en una textarea el responseText para ver que es lo que cargas?

Última edición por vengava; 27/12/2006 a las 12:22
  #17 (permalink)  
Antiguo 27/12/2006, 12:39
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

tu sabes que a mi me da como que no encuentra nada.

Donde coloco responseText

Gracias
  #18 (permalink)  
Antiguo 27/12/2006, 12:55
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

Si se ve que cometia algun error, pero estas en lo cierto devuelve un 302, lo que no logro entender donde colocar el ajax.responseText
  #19 (permalink)  
Antiguo 27/12/2006, 13:38
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Por otro lado, si lo que quieres es enviar datos a agregacar.php y quedarte en la misma página puedes llamar a agregacar con ajax quitando el header location del php.
De esa manera agregarías el producto al carro y te quedarías en la misma página
  #20 (permalink)  
Antiguo 27/12/2006, 13:42
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Puedes crear temporalmente una textarea en la página donde haces la llamada ajax:
Código HTML:
<textarea id="areatexto" cols="30" rows="10"></textarea> 
El responseText colócalo en la función js llamarasincrono cuando readystate==4:
Código:
if (pagina_requerida.readyState == 4) {
   document.getElementById("areatexto").value = pagina_requerida.responseText;
}
Y a ver que pone...

Última edición por vengava; 27/12/2006 a las 13:47
  #21 (permalink)  
Antiguo 27/12/2006, 13:45
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

No entiendo mucho tu idea.
Lo que pasa que el agregar lo invoco de otro archivo php que invoco en el contenedor (en los codigos anteriores esta).
Pero bueno con tal de probar no hay problem, lo que no me imagino como hacerlo, bueno gracias por tu gran ayuda,

Saludos
  #22 (permalink)  
Antiguo 27/12/2006, 13:53
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Lo que quiero decir es que para enviar datos a agregacar.php, en lugar de esto:
Código HTML:
<a href="contenidos/agregacar.php...
puedes hacer esto:
Código HTML:
<a href='javascript:llamarasincrono("contenidos/agregacar.php...
De esa forma envías datos a agregacar.php y la página que tienes delante se queda donde está.
  #23 (permalink)  
Antiguo 27/12/2006, 14:07
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

tu sabes que quedo barbaro, pero ahora tengo otro problema que cuando agrego quiero que me cambie la imagen de comprar a agregado y con esto no se carga nuevamente la pagina, por lo tanto la imagen no vuelve a cambiar.

Me explique o no???

Te paso el archivo como quedo ahora

Código PHP:
    <?php if($carro[md5($row['id'])]['identificador']!=md5($row['id'])){?>
    <a href="javascript:llamarasincrono('contenidos/agregacar.php?<?php echo SID ?>&id=<?php echo $row['id'];?>', 'contenidos');">
    <img src="/imagenes/comprar.gif" border="0" title="Agregar al Carrito"></a>
    <?php }else{?>
    <img src="/imagenes/agregado.gif" border="0" title="Ya lo selecciono"></a><?php }?>
Bueno la verdad que tu ayuda me esta sirviendo de mucho, gracias
  #24 (permalink)  
Antiguo 27/12/2006, 16:21
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Me alegro de que saliera algo

Vale para las imágenes puedes probar esto, yo no lo probé tal cual te lo pongo pero creo que va bien:

1.- Agrégale un atributo id a la imagen para poder acceder a ella:

Código HTML:
<img id="estado_compra" src="/imagenes/comprar.gif" border="0" title="Agregar al Carrito"> 
cuando en ajax recibas el estado 200 OK harías algo así:

Código HTML:
if (pagina_requerida.readyState == 4) {
   if(pagina_requerida.status==200) {
      cargaImagen("estado_compra","/imagenes/agregado.gif","Ya lo seleccionó");
   }
}
Lo cual llamaría a esta función que le cambia el src y el title a una imagen llamada por su id:

Código HTML:
function cargaImagen(img_id, img_src, img_tit) {
   var imagen_carro = document.getElementById(img_id);
   imagen_carro.src = img_src;
   imagen_carro.title = img_tit;
}
  #25 (permalink)  
Antiguo 28/12/2006, 05:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

Bueno lo pruebo y te comento, las funciones de cambio de imagen lo realizo en mi archivo de ajax (viste que te pregunto ya que soy bastante nuevo en el tema de ajax). Por supuesto que gracias nuevamente, saludos
  #26 (permalink)  
Antiguo 28/12/2006, 05:50
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Lo coloque en mi archivo de Ajax

Bueno tu sabes que me genere el codigo que me aconsejaste en el archivo que ejecuto todo lo relacionado a ajax; pero la imagen sigue sin cambiar. Bueno seguiremos intentando, como siempre cualquier aporte sera bienvenido, gracias y saludos.

Te paso por las dudas el codigo del archivo Ajax

Código:
// Documento JavaScript
// Esta función cargará las paginas
function llamarasincrono(url, id_contenedor){
	var pagina_requerida = false
	if (window.XMLHttpRequest) {// Si es Mozilla, Safari etc
		pagina_requerida = new XMLHttpRequest()
	} else if (window.ActiveXObject){ // pero si es IE
		try {
			pagina_requerida = new ActiveXObject("Msxml2.XMLHTTP")
		} 
		catch (e){ // en caso que sea una versión antigua
		try {
			pagina_requerida = new ActiveXObject("Microsoft.XMLHTTP")
		}
		catch (e){}
	}
		}
		else
			return false
			pagina_requerida.onreadystatechange=function(){ // función de respuesta
			cargarpagina(pagina_requerida, id_contenedor)
	}
	pagina_requerida.open('GET', url, true) // asignamos los métodos open y send
	pagina_requerida.send(null)
}


//condicion y funcion para cambio de imagen
if (pagina_requerida.readyState == 4){
	if (pagina_requerida.status == 200){
		cargaImagen("estado_compra","/imagenes/agregado.gif", "Ya lo selecciono");
	}
}
function cargaImagen (img_id, img_src, img_tit){
	var imagen_carro = document.getElementById (img_id);
	imagen_carro.src = img_src;
	imagen_carro.title = img_tit;
}

// todo es correcto y ha llegado el momento de poner la información requerida
// en su sitio en la pagina xhtml
function cargarpagina(pagina_requerida, id_contenedor){
if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1))
document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText
}
  #27 (permalink)  
Antiguo 28/12/2006, 10:55
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

Hola:

La función cargaImagen la debes llamar en tu función cargarpagina, una vez que compruebas que se ha completado la petición (pagina_requerida.readyState == 4) y que el estado HTTP es 200 OK (pagina_requerida.status==200).
Al cumplirse esas dos condiciones, supuestamente habrás añadido al carro lo que sea y puedes llamar a cargaImagen.

Pero como cargarpagina no sólo la llamas para agregacar.php deberás controlar en el código que te cambie de imagen sólo cuando hayas llamado a agregacar.php.

Para eso, podrías devolver algo en agregacar.php (por ejemplo echo "CARRO_OK") que te indique que has agregado algo al carro.
La respuesta ajax, como sabes te entra en tu método cargarpagina cuando el pagina_requerida.readystate==4 (petición procesada) y el pagina_requerida.status ==200 (respuesta OK) en la propiedad pagina_requerida.responseText.
Si compruebas que pagina_requerida.responseText=="CARRO_OK" llamas a cargarImagen
  #28 (permalink)  
Antiguo 28/12/2006, 11:32
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

Bueno me perdi totalmente (te pase el codigo ajax, completado con las lineas que me pasastes); pero la verdad no entendi muy bien lo que tengo que hacer (acordate que Ajax me hace perder un poco el hilo de la programacion).
  #29 (permalink)  
Antiguo 28/12/2006, 12:07
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 18 años, 3 meses
Puntos: 1
Re: Aplicacion php ajax

En principio debes ponerlo aquí:
Código HTML:
function cargarpagina(pagina_requerida, id_contenedor){
    if (pagina_requerida.readyState == 4 && (pagina_requerida.status==200 || window.location.href.indexOf("http")==-1)) {
        document.getElementById(id_contenedor).innerHTML=pagina_requerida.responseText;
        cargaImagen("estado_compra","/imagenes/agregado.gif", "Ya lo selecciono");
    }
}
Es es ese método donde detectas que la petición http realizada por medio de ajax, se ha completado.

Una pregunta: ¿porqué en el método cargarpagina pones esto:?
Código HTML:
window.location.href.indexOf("http")==-1
  #30 (permalink)  
Antiguo 28/12/2006, 13:22
 
Fecha de Ingreso: agosto-2006
Mensajes: 388
Antigüedad: 18 años, 4 meses
Puntos: 0
Re: Aplicacion php ajax

Sinceramente no se, este codigo me lo pasaron (por supuesto que estoy leyendo algo); asi que de ajax mucho no entiendo, a lo mejor si lo quito no cambia nada, voy a probar y te comento, gracias y saludos
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 07:14.