Ver Mensaje Individual
  #11 (permalink)  
Antiguo 11/06/2014, 12:38
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Cambiar div sin recargar pag

El evento submit es propio de los formularios, no de los botones u otros elementos. ¿Qué es lo que haces cuando pulsas un botón? La respuesta es obvia: Un clic (traducción de la palabra anglosajona click). Entonces, lo que debes de aplicar es el evento onclick. Un pequeño ejemplo puede clarificar las cosas:

Código HTML:
Ver original
  1. <button id = "ejemplo" data-estado = "no">Me gusta</button>

Código Javascript:
Ver original
  1. var boton = document.getElementById("ejemplo"),
  2.     idUsuario = document.getElementById("id_usuario").value;
  3.  
  4. boton.addEventListener("click", function(){
  5.     var estado = this.getAttribute("data-estado");
  6.  
  7.     if (estado == "no"){
  8.         this.innerText = "Ya no me gusta";
  9.         this.setAttribute("data-estado", "si");
  10.         estado = "si";
  11.     }
  12.     else{
  13.         this.innerText = "Me Gusta";
  14.         this.setAttribute("data-estado", "no");
  15.         estado = "no";
  16.     }
  17.  
  18.     $.ajax({
  19.         url: "cambiar.php",
  20.         type: "POST",
  21.         data: {
  22.             id: idUsuario,
  23.             valor: estado
  24.         }
  25.     });
  26. }, false);

Y en el archivo cambiar.php:

Código PHP:
Ver original
  1. $valor = mysql_real_escape_string(strip_tags($_POST['valor']));
  2. $id = mysql_real_escape_string(strip_tags($_POST['id']));
  3. mysql_query(sprintf('UPDATE tabla SET megusta = "%s" WHERE id = %d', $valor, $id));

Cuando pulses el botón, tomarás el valor del pseudo-atributo data-estado y lo evalúas, si es igual a "no", es decir, si todavía no se ha pulsado dicho botón, cambias el texto que contiene a "Ya no me gusta", el estado a "si" y haces lo contrario cuando el valor de data-estado sea distinto. Luego, mediante Ajax, envías el valor hacia el archivo PHP que actualizará el estado en la base de datos, enviándole el estado del botón como el identificador del usuario en cuestión para que solo a él le afecte el cambio. El identificador del usuario lo tomo de un elemento en el documento que contenga dicho dato, si no lo tienes, debes crearlo y asignarle el respectivo valor.

En el archivo PHP, desinfectas los datos de posible código malicioso y realizas la actualización del estado.

Un ejemplo sin base de datos:


Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand