Refresh chat Ajax Php
Refresh chat Ajax Php postato il 16/10/2012 13:36:17 nel forum programmazione, open source e hosting
Riciao a tutti, proseguendo nei miei tentativi sono riuscito a far funzionare una semplice chat in ajax e php, tutto perfetto ma vorrei capire se è possibile imporre un refresh alla pressione del tanto invio, dato che al momento la chat inserisce le righe nuove solamente allo scadere del time di update impostato in questo codice:
function Update()
{
return Request();
}
window.setInterval("Update()", 3000)
var XMLHTTP;
function Request()
{
XMLHTTP = GetBrowser(ChangeStatus);
XMLHTTP.open("GET", "ajax.php", true);
XMLHTTP.send(null);
}
function ChangeStatus()
{
if (XMLHTTP.readyState == 4)
{
var R = document.getElementById("CHAT");
R.innerHTML = XMLHTTP.responseText;
}
}
function GetBrowser(FindBrowser)
{
if (navigator.userAgent.indexOf("MSIE") != (-1))
{
var Class = "Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5") != (-1));
{
Class = "Microsoft.XMLHTTP";
}
try
{
ObjXMLHTTP = new ActiveXObject(Class);
ObjXMLHTTP.onreadystatechange = FindBrowser;
return ObjXMLHTTP;
}
catch(e)
{
alert("attenzione: l'ActiveX non sarà eseguito!");
}
}
else if (navigator.userAgent.indexOf("Mozilla") != (-1))
{
ObjXMLHTTP = new XMLHttpRequest();
ObjXMLHTTP.onload = FindBrowser;
ObjXMLHTTP.onerror = FindBrowser;
return ObjXMLHTTP;
}
else
{
alert("L'esempio non funziona con altri browser!");
}
}
Se serve che posti il codice delle pagine a cui si riferisce il tutto chiedete pure :3
Pagine → 1
16/10/2012 14:39:40 e modificato da darkabe il 16/10/2012 14:41:18
nicodem ha scritto: Non puoi banalmente mettere all'onclick del tasto invia:
[quote]onclick="Update();"
E forzare quindi l'update della pagina?[/quote]
Quoto, inoltre se non ho letto male sono 3000 millisecondi per il refresh, penso che aspettare al massimo 3 secondi dopo aver premuto invia non ammazza nessuno.
In alternativa potresti anche richiamare il refresh quando inserisci l'azione, ma alla fine è come usare l'onClick
16/10/2012 19:17:54
La soluzione sopra potrebbe non funzionare. Dovete ricordarvi che l'evento onClick viene lanciato nel momento esatto che il tasto viene premuto. Ma non avete considerato che in quello stesso momento parte anche la richiesta di invio del messaggio di chat al server. QUINDI, la momento del clic su tasto di invio il messaggio nuovo di chat non è ancora arrivato al server e quindi non comparirà nella chat!
Ovviamente dico "potrebbe non funzionare" perchè questa è una questione legata molto strettamente al tempo che il browser di mette a inviare e ricevere dati dal server e a quanto tempo il server ci mette ad elaborare un nuovo messaggio di chat. Ma in generale questo approccio non funziona.
Quello che dovresti fare è chiamare la funzione update subito dopo che è stato eseguita la richiesta di inserimento del nuovo messaggio. Mi raccomando, ricordati che le chiamate AJAX sono asincrone, devi assicurarti che l'update venga chiamato DOPO che la richiesta AJAX di inserimento si è completata.
Altro problema: il tuo codice javascript fa uso dell'analisi dello userAgent per riuscire a capire quali funzioni chiamare per AJAX. Questo comportamento è deprecato, e non andrebbe mai usato. Invece di testare il NOME del browser dovresti verificare l'esistenza delle funzioni stesse che vuoi andare a chiamare. In questo modo non sarai più legato a browser specifici e il tuo codice funzionerà anche su browser che magari tu non conosci ma che implementano comunque le funzioni giuste per far funzionare Ajax.
Cioè, tutti i controlli di questo tipo:
if (navigator.userAgent.indexOf("Mozilla") != (-1))
Dovrebbero diventare cose del tipo:
if (typeof(XMLHttpRequest)!="undefined")
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Raja Dunia ↗
War Thunder ↗