Autor Zpráva
sloncz
Profil
Zdravím, chtěl bych se zeptat. Mám chat v divu
<div id="chat">
</div> a potřeboval bych udělat to, aby se mi každých 5 sekund ten div s tím chatem reloadnul ale bez toho, aby se reloadnula i celá stránka. S JS začínám a tak budu rád, když mi poradíte. Předem díky :)
final
Profil
sprav si 5 sekundový interval, v ktorom budeš meniť obsah toho divu
Anonymní
Profil *
sloncz:
Budeš muset využít i Ajaxu(protože ten chat bude běžet na straně serveru tak musíš vytahovat údaje z databáze).
Postup je teda takovýhle:
Nastavíš interval na 5 sekund a každých 5 sekund odešleš žádost na server a "reloadneš" div pomocí innerHTML.

Ale na tohle si dej pozor, protože pokud skript, který se bude zpracovávat každých 5 sekund napíšeš blbě(třeba budeš pokaždé vypisovat všechny příspěvky z chatu), tak se ti prostě stane, že server bude totálně zalaglý. A nebude fungovat nic(kór, když hodně serverů umožňuje maximální počet procesů, který je sice většinou dostatečný, ale ono pokaždé vypsat třeba 5000 výsledků z databáze zrovna nejrychlejší nebude).

Samozřejmě nemusím zdůraznovat, že budeš potřebovat i server side(takže serverový jazyk - PHP, ASP.NET, JSP - pro tyhle účely bych asi spíše radši volil JSP, či .NET, protože je o poznání rychlejší - až několikanásobně a nějakou databázi - MySQL, MSSQL)
Kubo2
Profil
sloncz:
1/ Zatiaľ to určite netreba reloadovať každých 5s, bohato ti bude stačiť 1/3 min. (20s),
2/ Postup:
1. Pomocou window.setInterval(funkcia, milisekundy) si nadefinuješ ľubovoľný interval (1s = 1000ms) spúšťania danej funkcie,
2a. V tejto funkcii použiješ inštanciu objektu window.XMLHttpRequest (alias window.ActiveXObject("Microsoft.XMLHTTP"); pre IE), aby si mohol na server poslať požiadavku, prostredníctvom ktorej si zistíš, či bol obsah chatu modifikovaný.
2b. Ak nebol, tak pripojenie ukončíš metódou this.abort() objektu AJAX-u.
Inak nejakým spôsobom (ktorý si sám určíš) aktualizuješ obsah divu (chatu).


Anonymní:
Nepoznám síce Vaše meno, ale predbehli ste ma takmer o 41 minút (ale z mobilu sa dosť pomaly píše).
sloncz
Profil
Omlouvám se, jsem asi deb*l, ale neudělal by mi někdo prosím alespoň ukázku jak na to? :)
Kubo2
Profil
sloncz:
Nie si debil, každý někdy začínal.
sloncz
Profil
Byl by někdo ochoten mi ukázat nějakou ukázku prosím? :)
Amunak
Profil
Můžeš taky využít iframu, který se sám bude pořád obnovovat. Pro takový začátek to asi bude jednodušší, než k načítání dat používat AJAX. Tam je totiž dost záludností. Musel bys načítání volat znova až tehdy, kdy předchozí načtení proběhlo. A obvykle se to dělá tak, že velmi často kontroluješ, jestli došlo ke změnám, a když ano, pošleš jen nové řádky chatu. To už je trochu složitější, než jen iframe s refreshem, který prostě vždycky znovu načte všechno ze serveru. Navíc se takový chat dá napsat i tak, že vůbec nebude potřebovat JS.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0