elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  ajax recibir daros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: ajax recibir daros  (Leído 7,648 veces)
AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: ajax recibir daros
« Respuesta #10 en: 26 Mayo 2016, 05:00 am »

Sobre lo que comentas que se vuelve lento al momento de cargar es por que En cada envio de mensaje vuelves a leer todos los mensajes existentes la base de datos:

Código
  1.    $result = mysqli_query($link, 'SELECT * FROM chat');
  2.  
  3.    while ($fila = mysqli_fetch_array($result)) {
  4.        echo mostrarDatos($fila, $color);
  5.    }

Esa funcion mostrarDatos te devuelve todos los datos y es lo que madas de regreso al ajax..

Offtopic para chiste geek.
Citar
Su nombre es Francis, saco lo de Ajax del javascript....

Como te decia En cada actualizacion lees todos los mensajes otra vez y los vuelves a colocar en la ventana

Código
  1. $('#contenedor').empty().append( content );

Podrias simplemente llevar un registro de cual es el ultimo mensaje recivido por el usuario X y en el SQL del chat solo pedir los mensjaes que sean mayor que el ultimo dato mandado y listo,

Un buen lugar para guardar ese dato es en la cookie o en el session del php aunque opciones hay muchas. puedes delegarlo al cliente y que te lo mande con cada consulta ajax y actualizar la variable desde el javascrip cada que reciva elementos nuevos.

Entonces al recibitlos puede hacerles append normal sobre el div sin necesidad de actualizarlo todo.

Saludos


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: ajax recibir daros
« Respuesta #11 en: 27 Mayo 2016, 18:24 pm »

Haciendo eso no serviria para tiempo real, porque si entran dos usuarios a la web y sin recargar la página pondrían mensajes y cada uno solo vería sus propios mensajes y no los de los demás hasta que no recargaran.

Para producción hay varias cosas que se podrían mejorar bastante:

Primero ese script estaría llamando mil veces la misma función y reventaria el servidor cuando hayan varios usuarios online. Para solucionarlo se mueve el while dentro de la función, llamandola 1 vez pasandole como arguamento el fetch array:

Código
  1. function mostrarDatos($result, $color) {
  2.    while ($fila = mysqli_fetch_array($result)) {
  3.  
  4.    }
  5. }
  6.  
  7. $result = mysqli_query($link, 'SELECT * FROM chat');
  8.  
  9. echo mostrarDatos($result, $color);
  10.  

De igual modo no veo necesidad para una función...

Para tiempo real, habria que hacer que jquery hiciera una petición cada X segundos (5 como mínimo) y que comprobara si hay nuevos mensajes. Para empezar habria que enumerarlos con un id y usar ese id para saber cual es el ultimo mensaje y mostrar los ids que falten.


En línea

jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: ajax recibir daros
« Respuesta #12 en: 27 Mayo 2016, 23:22 pm »

Muchas gracias por la aclaracion pero no te preocupes, ya tenia un script en ajax que cada segundo esta actualizando el div donde se encuentra el chat

Saludos
En línea

jalbtercero

Desconectado Desconectado

Mensajes: 80


Ver Perfil
Re: ajax recibir daros
« Respuesta #13 en: 29 Mayo 2016, 11:41 am »

gAb1 Vulevo a probar he implementar tu codigo:


Mira dejemos el lado estetico de lado, El script que has "comprimido no va bien", es decir cada vez que entro al chat se envia un mensaje vacio, si pongo el boton como <a> no pasa nada, la funcion, valgame la redundancia, no funciona, y ya para terminar el scroll (de la demo), no va bien, porque no baja del todo, a veces se queda arriba, otras veces solo baja un poco..

Despues he modificado mi pagina y he puesto el scroll, pero solo me lo hace 1 vez, que es cuando entra a la pagina y me envia el mensaje vacio: las otras veces me dice:

Uncaught TypeError: Cannot read property 'top' of undefined


(anonymous function)   @   enviar.js:12
i   @   jquery.min.js:2
j.fireWith   @   jquery.min.js:2
z   @   jquery.min.js:4
(anonymous function)   @   jquery.min.js:4



Saludos.
« Última modificación: 29 Mayo 2016, 12:02 pm por jalbtercero » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: ajax recibir daros
« Respuesta #14 en: 29 Mayo 2016, 20:36 pm »

A ver por partes:

Si el script que he hecho no funcionase bien, no funcionaria en ninguna parte, sin embargo está funcionando (menos lo del scroll) perfectamente:

- La función se activa ya sea cuando le das a intro o click al boton <a>. En ningún otro momento se debería activar (a menos que la llames desde otra parte).
- Se puede comprobar en la demo.

¿Por qué dices entonces que no funciona bien? Si no está funcionando en tu página, eso es algo a parte y no es culpa mia. Habrá que encontrar el fallo.

Si cada vez que entras al chat se envia un mensaje vacio, revisa bien que estás haciendo porque el código que yo he escrito no hace nada de eso.

El problema del scroll ya te lo dije en tu otra pregunta y que esperes a que alguien sepa como arreglarlo. No es necesario que me lo recuerdes...

Ahora hay que tratar de localizar que es lo que está provocando que al entrar al chat se envie un mensaje en vacio.

Para no permitir enviar mensajes vacios:

Código
  1. if (mensaje == '') {
  2.    alert('Debes escribir un mensaje!');
  3.    return false;
  4. }

En el link a la demo de esta respuesta se incluye esto, incluyelo en la función y mira si se sigue enviando el mensaje en blanco. Si sigue ocurriendo entonces es algo totalmente ajeno a la función, pero si ya no ocurre entonces quiere decir que en algún lado de tu página estás llamando a la función myFunction().

Haz un poco de debug y descubrirás que está ocurriendo en tu página. Si no logras descubrir donde está el fallo, muestranos todo el código y se intentará localizar el fallo y solucionarlo.


Edito: Se me olvido comentarte: A parte de la comprobación de mensaje vacio también hay otro cambio al actualizar el div, en la demo lo verás, cambia la linea que tienes por $('#final').before( content ); Esto lo que hace es mostrar los mensajes en el orden correcto.
« Última modificación: 29 Mayo 2016, 20:47 pm por gAb1 » En línea

daniela Vega

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: ajax recibir daros
« Respuesta #15 en: 30 Mayo 2016, 21:41 pm »

Creas DIV con el id “recargado” donde vas a llamar el resultado de un archivo PHP, que podría ser la invocación a una base de datos, un mensaje, validación, prácticamente cualquier cosa que hag PHP y porsupuesto sin recargar la página

<div id="recargado">Mi texto sin recargar</div>
<p align="center">
    <a href="#" onclick="javascript:recargar();">recargar</a>
</p>


 incluyes la libreria jquery
<script language="javascript" src="js/jquery-1.2.6.min.js"></script>


Escribes el código que se ejecutará cuando demos click al link “recargar”
<script language="javascript">
function recargar(){   
       /// Aqui podemos enviarle alguna variable a nuestro script PHP
    var variable_post="Mi texto recargado";
       /// Invocamos a nuestro script PHP
    $.post("miscript.php", { variable: variable_post }, function(data){
       /// Ponemos la respuesta de nuestro script en el DIV recargado
    $("#recargado").html(data);
    });         
}
</script>
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Tutorial] - Login con ajax . Mysql || Php con clases || Ajax « 1 2 »
PHP
Hadess_inf 15 27,000 Último mensaje 9 Diciembre 2010, 02:44 am
por delorian15
alguien sabe como actualizar una base de daros de wow tinity core a la 3.3.5a
Dudas Generales
darck113 0 2,553 Último mensaje 3 Noviembre 2011, 03:18 am
por darck113
Recibir comunicaciones de red
Programación General
eb4bgr 0 1,559 Último mensaje 19 Febrero 2013, 18:29 pm
por eb4bgr
Recibir datos a través de AJAX diferentes divs
Desarrollo Web
itzg3 4 2,462 Último mensaje 10 Abril 2014, 22:36 pm
por itzg3
Daros las gracias
Foro Libre
flacc 2 2,863 Último mensaje 22 Octubre 2022, 22:38 pm
por Danielㅤ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines