2012-10-27 35 views
7

ho intenzione di rendere questo sistema di commento in cui commenti possono essere pubblicati e aggiornati senza aggiornare la pagina (si può vedere questo su youtube) commentareale tempo ajax commenta

distacco è comprensibile (posta alla pagina php da JavaScript e fuggi Query SQL sul lato server per importarlo, piuttosto che restituire il commento e recuperare in html)

L'aggiornamento è la parte che non capisco. Come posso aggiornare automaticamente la pagina su determinati intervalli e aggiungere commenti? Non sarà un casino quando più utenti provano a commentare allo stesso tempo?

Mi chiedevo se qualcuno può consigliare un buon modo (come parola di consiglio) per raggiungere questo obiettivo e mi risparmiare un po 'di tempo

risposta

2

Il modo più comune è quello di chiamare setTimeout o setInterval in javascript per il polling ogni 5- 25 secondi. Fondamentalmente, memorizzi l'idea dell'ultimo commento che hai ricevuto sul lato javascript, quindi chiami una funzione che invia questo ID a un server remoto. Se ci sono messaggi più recenti di questo id, li rimandi tutti via XML o JSON (in genere json è più facile da gestire sul lato javascript, specialmente se usi un framework come jQuery).

+0

grazie, potrei provare questo – Alexim

+2

JSON può essere facilmente gestito senza jQuery, usando 'JSON.parse'. –

+0

@FelixKling Non ho detto nulla al contrario :). – ajacian81

1

È possibile utilizzare "Polling lungo". Fondamentalmente è una tecnica in cui si apre una connessione Ajax e il server non si chiude finché non ha una risposta da inviare. Il client dopo aver ricevuto questa risposta richiede una nuova connessione e attende di nuovo una risposta.

È possibile controllare un tutorial: Simple Long Polling Example with JavaScript and jQuery.

1

Un altro ottimo modo sarebbe utilizzare un servizio di iscrizione/pubblicazione.

sto usando PubNub in questo momento per le notifiche, Commenti ect ..

0

una volta ho usato una tecnica semplice (senza timer utilizzato, nessun aggiornamento totale) con un difetto che mostra solo i nuovi commenti, ma non modifica ed eliminazione da parte di altri a commenti visualizzati esistenti. Tieni presente che l'aggiornamento dell'intero pannello dei commenti potrebbe non essere fattibile se consenti ai commenti "espandi/comprimi/visualizza più". La mia tecnica semplice è di avere (i) un elemento di input nascosto per memorizzare l'indice/chiave primaria dell'ultimo commento visualizzato (ii) diversi div in modo univoco identificati per contenere i commenti visualizzati esistenti e l'aggiornamento ajax o la manipolazione dom di html solo quel div quando vengono eseguite le azioni su di esso (iii) un div per mantenere una vista più commenti pulsante in cui il pulsante verrà visualizzato solo se ci sono più commenti da visualizzare.

Pertanto, ogni volta che viene pubblicato un nuovo commento, "il pannello di visualizzazione più commenti con un pulsante" verrà aggiornato dicendo vista [X + (# recenti nuovi commenti di altri) + (# il tuo nuovo commento)] commenti. Facendo clic sul pulsante, verranno visualizzati altri 3 nuovi commenti insieme al pulsante "Visualizza altri commenti Y".