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

Nuevo en esto

Estas en el tema de Nuevo en esto en el foro de Frameworks JS en Foros del Web. Hace poco tiempo, me pidieron si sabría hacer una red social con las tecnologías que conozco, y dije que si (PHP, HTML, CSS y JavaScript). ...
  #1 (permalink)  
Antiguo 23/07/2010, 02:02
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 15 años, 1 mes
Puntos: 10
Nuevo en esto

Hace poco tiempo, me pidieron si sabría hacer una red social con las tecnologías que conozco, y dije que si (PHP, HTML, CSS y JavaScript). Pero sabiendo lo que es AJAX, quisiera implementar algunas cosas.

En lo que estoy ahora es en el estado de la persona:
Pone arriba el estado de la persona sacado de la bd, y abajo un campo para editarlo (con un botón) y me gustaría que al darle al botón y sin recargar lá página, se actulizase la bd y el texto. ¿Es posible?

PD.: En cuanto tenga tiempo, me pongo a aprender AJAX, pero ahora no tengo.
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #2 (permalink)  
Antiguo 23/07/2010, 06:11
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Nuevo en esto

Hola

Para lo que quieres hacer no es necesario usar mucho tiempo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 23/07/2010, 06:13
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 15 años, 1 mes
Puntos: 10
Respuesta: Nuevo en esto

Gracias! voy a probarlo
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #4 (permalink)  
Antiguo 25/07/2010, 04:20
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 15 años, 1 mes
Puntos: 10
Respuesta: Nuevo en esto

A partir de eso que me pasaste, indagué un poco más y encontré para cambiarlo también en mysql (http://www.ribosomatic.com/articulos...-de-registros/). Ahora este es el problema:

Tengo en un div, un título que pone "Tu estado", la siguiente línea que coge el estado de la bd y la última línea que es un form con 1 campo de texto (estado) y 1 oculto para el id.

Al pulsar "Cambia tu estado", el botón submit, se hace una consulta ajax, y se actualiza la bd, pero queda con un cuadrito de "La actualización se realizó correctamente". Cómo podría cambiar eso por que salga de nuevo el form, y cambie el estado?

PD: La bd ya se cambia.

Esta es la zona de código (acabo de cambiar el mensaje, pero ponía eso de más arriba)
Código:
ajax.open("POST", "estado.php",true);
    ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {
        
            divFormulario.innerHTML = "<p style='width:400px;'>Actualizando...</p>";
            
        }
    }
En estado.php se actualiza la bd.
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #5 (permalink)  
Antiguo 25/07/2010, 08:08
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Nuevo en esto

Hola

Saca el formulario del div al que corresponde esta variable divFormulario

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 25/07/2010, 09:07
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 15 años, 1 mes
Puntos: 10
Respuesta: Nuevo en esto

Ok, eso es fácil, pero y actualizar para que ponga lo que se acaba de enviar?
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #7 (permalink)  
Antiguo 26/07/2010, 04:54
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Nuevo en esto

Hola

Los estados de la petición son estos
Cita:
0 No inicializado (el método open no a sido llamado)
1 Cargando (se llamó al método open)
2 Cargado (se llamó al método send y ya tenemos la cabecera de la petición HTTP y el status)
3 Interactivo (la propiedad responseText tiene datos parciales)
4 Completado (la propiedad responseText tiene todos los datos pedidos al servidor)
Quedaría al así
Código Javascript:
Ver original
  1. ajax.onreadystatechange=function() {
  2. if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
  3. divFormulario.innerHTML = "<p style='width:400px;'>Actualizando...</p>";
  4. }
  5.  
  6. else if (ajax.readyState==4) {
  7. if(ajax.status==200){  
  8. divFormulario.innerHTML = ajax.responseText; // Recibes la respuesta
  9.            
  10. }
  11. }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 27/07/2010, 09:16
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 15 años, 1 mes
Puntos: 10
Respuesta: Nuevo en esto

Siento no haber respondido antes, no lo he podido probar hasta hoy.

De tu forma no va, pero hay una manera mucho más sencilla: cuando llega al estado 4, pues que ponga lo que acaba de enviar a la bd, en lugar de enviarlo y volverlo a coger.

Creo que ya va. Cualquier otro problema, espero que me ayudeis ;)

Gracias!
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #9 (permalink)  
Antiguo 27/07/2010, 12:14
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Nuevo en esto

Hola

Cita:
Iniciado por markmb Ver Mensaje
De tu forma no va, pero hay una manera mucho más sencilla: cuando llega al estado 4, pues que ponga lo que acaba de enviar a la bd, en lugar de enviarlo y volverlo a coger.
Si no funciona de la manera que te he indicado, algo has tenido que hacer mal. En cuanto a que has encontrado una manera mas sencilla, pues no, primero el trabajo en el servidor será el mismo, segundo se continua recibiendo una respuesta, una cadena vacía, tercero si se produce un error a la hora de insertar los datos en la bd o los datos no son correctos, etc... se mostrará lo que el usuario escribió en el textfield o lo que sea que haga

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 27/07/2010, 12:16
 
Fecha de Ingreso: octubre-2009
Ubicación: En el ordenador
Mensajes: 504
Antigüedad: 15 años, 1 mes
Puntos: 10
Respuesta: Nuevo en esto

Lo de actualizando sí que va (apenas se ve de lo rapido que va), pero lo de response text pues no me salia nada, y lo he cambiado por que me vuelva a poner el formulario, y arriba, la variable que he enviado a la bd.

Por tanto, en el formulario se envia una variable a la bd, y esa variable aparece escrita en pantalla. Ya va como yo quería.
__________________
Buscando ideas para proyectos....

Esperando a tener 18 años....
  #11 (permalink)  
Antiguo 27/07/2010, 12:29
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 10 meses
Puntos: 126
Respuesta: Nuevo en esto

Hola

Para finalizar el tema. responseText no te muestra nada por que no se recibe nada en la respuesta, es lo que te comentaba que la respuesta estaba vacía. Si en el PHP haces echo "hola"; o en ASP Response.Write "hola", se imprimirá hola cuando el proceso este terminado. En cuanto a lo del texto "Se está actualizando" apenas se ve, y solamente la primera vez, eso es por que la cantidad de datos a enviar es mínima y se procesa muy rápido

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

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 20:46.