Foros del Web » Programando para Internet » Javascript »

¿Cómo volver a poner un botón intacto después de realizar la petición?

Estas en el tema de ¿Cómo volver a poner un botón intacto después de realizar la petición? en el foro de Javascript en Foros del Web. Hola. Tengo un botón echo en PHP (por el tema de las variables y algunas condiciones) que me ejecuta dos funciones: una para javascript('carrito') y ...
  #1 (permalink)  
Antiguo 20/09/2014, 15:13
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 9 años, 8 meses
Puntos: 0
¿Cómo volver a poner un botón intacto después de realizar la petición?

Hola.
Tengo un botón echo en PHP (por el tema de las variables y algunas condiciones) que me ejecuta dos funciones: una para javascript('carrito') y otra para ejecutar AJAX('traerDatos'):
Código PHP:
Ver original
  1. echo "<div id='compra'><img src='botonComprar.gif' class='compra' onclick='carrito(\"$articulo\",$precio_articulo); traerDatos(\"$articulo\",$precio_articulo);'/></div>";

Si se hace clic sobre ese botón se ejecuta la función de AJAX cuyo código es el siguiente:

Código Javascript:
Ver original
  1. function nuevoAjax()
  2. {
  3.     var xmlhttp=false;
  4.     try
  5.     {
  6.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  7.     }
  8.     catch(e)
  9.     {
  10.         try
  11.         {
  12.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  13.         }
  14.         catch(E) { xmlhttp=false; }
  15.     }
  16.     if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }
  17.  
  18.     return xmlhttp;
  19. }
  20.  
  21. function traerDatos(articulo, precio){
  22.     var capaCarrito=document.getElementById('compra');
  23.      var ajax=nuevoAjax();
  24.     capaCarrito.innerHTML="<center><img  src='AJAX/circuloAnimado.gif'></center>";
  25.     ajax.open("POST", "gestionarCarro.php", true);
  26.     ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  27.     ajax.send("articulo="+articulo+"&precio="+precio);
  28.     ajax.onreadystatechange=function(){
  29.     if(ajax.readyState==4 && ajax.status==200){
  30.        
  31. capaCarrito.innerHTML="<div id='compra'><img src='botonComprar.gif' class='compra' onclick='carrito(\"$articulo\",$precio_articulo); traerDatos(\"$articulo\",$precio_articulo);'/></div>";
  32.     }
  33. }
  34.  
  35. }

Se comunica bien con PHP, hace lo que tiene que hacer, mientras que lo hace, el usuario puede ver el 'circuloAnimado.gif', pero cuando termina, no me coloca el mismo botón de forma que una vez echo, aunque se vuelva a dar clic ni ejecuta la función de Javascript ni la da AJAX. Es la primera vez que hago esto, pero ¿cómo se puede volver a poner el mismo botón que estaba antes de la imagen de carga?.
Gracias.
  #2 (permalink)  
Antiguo 20/09/2014, 17:55
Avatar de apacheJack  
Fecha de Ingreso: septiembre-2014
Ubicación: Valencia
Mensajes: 6
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: ¿Cómo volver a poner un botón intacto después de realizar la petición?

Creo que el error está en que no imprimes el botón del carrito correctamente como se hace en PHP usando
Código PHP:
echo 
de nuevo.

Esto solo funcionaría si tuvieses tus funciones en un archivo.php:

Código PHP:
<?php
$boton_html 
"<div id='compra'><img src='botonComprar.gif' class='compra' onclick='carrito(\"$articulo\",$precio_articulo); traerDatos(\"$articulo\",$precio_articulo);'/></div>";
?>
Código:
capaCarrito.innerHTML="<?php echo $boton_html; ?>"

En caso de que quieras mantener los javascript en un .js, deberías usar su forma de concatenar cadenas de textos usando "+":

Código:
capaCarrito.innerHTML = "<div id='compra'><img src='botonComprar.gif' class='compra' onclick='carrito(\""+ articulo +" \", "+ precio +"); traerDatos(\""+ articulo +"\", " + precio + ");'/></div>"
No te olvides de darle los valores a var articulo y precio en javascript.

No me gusta mucho como lo has organizado, pero creo que te funcionará jaja. Ya me cuentas algo.

Última edición por apacheJack; 20/09/2014 a las 18:02
  #3 (permalink)  
Antiguo 21/09/2014, 16:41
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: ¿Cómo volver a poner un botón intacto después de realizar la petición?

Si funcionó. Gracias.
Para terminar ¿podrías decirme cómo lo organizarías tu? Así aprendo.
Un saludo.

Etiquetas: ajax
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 06:46.