Foros del Web » Programando para Internet » Jquery »

No consigo que con la funcion de ajax me cambie el src

Estas en el tema de No consigo que con la funcion de ajax me cambie el src en el foro de Jquery en Foros del Web. Buenas intento que me código cambie la src de una imagen pero que antes haga una consulta con $.post a una base de datos donde ...
  #1 (permalink)  
Antiguo 06/07/2013, 19:31
 
Fecha de Ingreso: julio-2013
Ubicación: Madrid
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 0
No consigo que con la funcion de ajax me cambie el src

Buenas intento que me código cambie la src de una imagen pero que antes haga una consulta con $.post a una base de datos donde coge el valor del estado de la mesa que es TINYINT y si es 0(ocupada) lo cambia 1(disponible) y si es 1 lo cambia a 0, y devuelve el estado final que recoge la función $.post y en función de la condición de si esta disponible le cambia la src y si esta ocupada le pone otra src.

este es mi código de html:
Código HTML:
Ver original
  1. <!doctype html>
  2. <html lang="en">
  3.     <meta charset="UTF-8">
  4.     <title>Reservas</title>
  5. </head>
  6.  
  7.     <h1>Reservar</h1>
  8.    
  9.  
  10.    
  11.        
  12.         <img id="mesa1" src="../img/seats_blue.png" alt="mesa" onclick="reservar_mesa($(this),$(this).attr('id'))">
  13.        
  14.  
  15.     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
  16.  
  17.     <script>
  18.    
  19.     function reservar_mesa(img,id){
  20.  
  21.         // recibe dos variables el objeto en si y el atributo id que sera el que enviemos por post
  22.        
  23.         var datos = "id_mesa="+id;
  24.  
  25.         var url = "../reservar_mesa.php";
  26.         $.post(url, datos, function(estado){
  27.            
  28.             if(estado === "ocupada"){ // si devuelve ocupada cambiamos la imagen a roja
  29.                 img.attr('src', '../img/seats_red.png');
  30.             } else{               //si devuelve disponible cambiamos la imagen a azul
  31.                 img.attr('src', '../img/seats_blue.png');
  32.             }
  33.         });
  34.     }
  35.  
  36.     </script>
  37. </html>


Y este es mi código de php:
Código PHP:
Ver original
  1. <?php
  2. require_once "inc/config.inc.php";
  3.  
  4.  
  5. if($_REQUEST['id_mesa']){            //recibo la variable a traves de request
  6.     $id_mesa = $_REQUEST['id_mesa'];
  7.  
  8.     $mysqli = new mysqli($config['DB_HOST'], $config['DB_USER'], $config['DB_PASS'], $config['DB']);  // me conecto a la base de datos
  9.  
  10.     if (mysqli_connect_errno()) {   //compruebo que no haya errores en la conexion.
  11.         printf("Conexion fallida: %s\n", mysqli_connect_error());
  12.         exit();
  13.     }
  14.  
  15.     $sql = "SELECT estado FROM mesas  WHERE id_mesa = '$id_mesa'";  // selecciono el estado de la mesa clickeada
  16.  
  17.     if ($resultado = $mysqli -> query($sql)) {  // condicion para comprobar que la consulta se este dando
  18.  
  19.             $fila = $resultado -> fetch_assoc();  // guardo en unarray los resultados
  20.             $estado  =  $fila['estado'];  // guardo el estado de la mesa
  21.  
  22.            
  23.  
  24.             if($estado){  // si el estado es true o 1 lo cambio a 0 y devuelvo el estado final
  25.                 $consulta = $mysqli -> query ("UPDATE  mesas SET estado = '0' WHERE id_mesa = '$id_mesa'");
  26.                
  27.                 $estado_final = "ocupada";
  28.             } else {  // si el estado es false o 0 lo cambio a 1 y devuelvo el estado final
  29.                 $consulta = $mysqli -> query ("UPDATE  mesas SET estado = '1' WHERE id_mesa = '$id_mesa'");
  30.            
  31.                 $estado_final = "disponible";
  32.             }
  33.                 echo $estado_final; // devuelvo el estado final
  34.  
  35.         }   else{
  36.             echo "Fallo en la primera consulta";
  37.         }
  38.  
  39.        
  40.     } else{
  41.         echo "No has seleccionado mesa";
  42.     }
  43.  
  44.  ?>

Cualquier ayuda sera bien recibida.
  #2 (permalink)  
Antiguo 06/07/2013, 20:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: No consigo que con la funcion de ajax me cambie el src

primero img no es un objeto seleccionado por JQuery por lo tanto img.attr te debería de dar un error.
Img según entiendo no esta en el ámbito del closure que le da el valor al success, simplemente, dentro de este closure busca el elemento con jquery y le haces el cambio que necesitas
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 06/07/2013, 21:01
Avatar de vesper_metal90  
Fecha de Ingreso: enero-2013
Mensajes: 103
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: No consigo que con la funcion de ajax me cambie el src

Yo lo haria asi mas facil

Código Javascript:
Ver original
  1. $(fuction(){
  2.  
  3.       $("#iddetuimagen").click(function(){
  4.  
  5.          $("#contenedor").load("tuarchivophp"),{tuviarable : valordelavariable,otravariable : "         <php  echo $tuvariableigualconphpsepuede?>" });
  6.  
  7.     });
  8.  
  9. }):


Código HTML:
Ver original
  1. <div id="contenedor">
  2. <div>

para recibir el valor que envias tienes que poner

Código PHP:
Ver original
  1. if(isset($_POST['elnombredemivariable'])){
  2.  
  3. $mivarible = $_POST['elnombredemivariable']
  4.  
  5. }

Lo que tu le mandas al archivo php este te lo devuelve en el div contenedor no se por ejemplo quieres buscar los cliente que se mayor a 25 años ti envias la variable con el load el archivo php la recibe la procesa y te devuelve algo que vas a cagar en el div contenedor
  #4 (permalink)  
Antiguo 06/07/2013, 21:16
Avatar de vesper_metal90  
Fecha de Ingreso: enero-2013
Mensajes: 103
Antigüedad: 11 años, 9 meses
Puntos: 1
Respuesta: No consigo que con la funcion de ajax me cambie el src

Cita:
Iniciado por carlos_belisario Ver Mensaje
primero img no es un objeto seleccionado por JQuery por lo tanto img.attr te debería de dar un error.
Img según entiendo no esta en el ámbito del closure que le da el valor al success, simplemente, dentro de este closure busca el elemento con jquery y le haces el cambio que necesitas
Tiene toda la razon lo que dice el amigo carlos_belisario pero lo puedes poner asi

Código HTML:
Ver original
  1. <a id="Imagen" href="" ><img src="barimage.bmp"/></a>

el jquery asi

Código Javascript:
Ver original
  1. $("a#Imagen").click(function(event){
  2.                    event.preventDefault();
  3.                    alert("Hola");
  4.                })

No soy un experto pero se me ocurre algo asi
  #5 (permalink)  
Antiguo 07/07/2013, 04:33
 
Fecha de Ingreso: julio-2013
Ubicación: Madrid
Mensajes: 13
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: No consigo que con la funcion de ajax me cambie el src

Al pasarle a la funcion reservar_mesa() el objeto en si $(this) y recibirla como img en la función si puedo acceder a la propiedad attr.
Lo que pretendo es que al hacer click en la imagen envie los datos al php en concreto su id, el php lo procese, modifique que en la base de datos el elemento con ese id le cambie el valor de la columna estado y devuelva su estado actual y en función de su estado actual que cambie la src de la imagen.
  #6 (permalink)  
Antiguo 07/07/2013, 07:48
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 7 meses
Puntos: 461
Respuesta: No consigo que con la funcion de ajax me cambie el src

Viendo bien ahora tu código y haciendo una prueba esto
Código PHP:
Ver original
  1. function cambiar(img)
  2.     {
  3.         var datos = "id_mesa="+img.attr('id');
  4.  
  5.         var url = "reservar_mesa.php";
  6.         $.post(url, datos, function(estado){            
  7.             if(estado === "ocupada"){ // si devuelve ocupada cambiamos la imagen a roja
  8.                 img.attr('src', 'imagen/Grafico.png');
  9.             } else{               //si devuelve disponible cambiamos la imagen a azul
  10.                 img.attr('src', 'imagen/foto1.png');
  11.             }
  12.         });
  13.     }

me funciono correctamente, y si te fijas es tu mismo código que lo coloque en una función que ya tenía hecha, ahora si depuras con firebug te da algún error?? porque me parece mas error en la petición al servidor ya que el javascript funciona
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: ajax, funcion, src
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 18:22.