Qual è il modo corretto per aggiornare tutti gli elementi di una pagina visualizzata tramite AJAX?
-
23-09-2019 - |
Domanda
Ho una pagina complessa viene reso da PHP e vorrei mantenere tutti gli elementi della pagina aggiornato tramite AJAX tempo di polling.C'è qualche generale / intelligente per la progettazione di un'infrastruttura di supporto senza dover specificare manualmente ogni elemento per l'aggiornamento?Solo in cerca di idee.Grazie!
Soluzione
Utilizzando jQuery, vorrei inviare un elenco separato da virgole di selettori di jQuery per aggiornare al server. Il server in ultima analisi, rispondere leggendo quei selettori e produrre il codice HTML per riempire gli elementi corrispondenti ai selettori:
$.get("/updater", { elementsToUpdate: "#someDiv,#someTable,#someOtherElement"}, function(json) {
$.each(json, function(k, v) {
// the key is the selector, the value is the
// HTML to set to that (or those) element(s):
$(k).html(v);
});
}, "json"); // we are expecting the server to return JSON
Il server risponderà inviando JSON al cliente con la seguente struttura:
{"#someDiv":"this is some HTML to fill up div with ID someDiv","#someOtherElement":"here is some more HTML","#someTable":"here is some more HTML"}
Altri suggerimenti
magari aggiungere una classe speciale a tutti gli elementi per essere aggiornati tramite la tecnologia AJAX, e inoltre è possibile codificare i dati supplementari in alcuni altri attributi per esempio
<a class="ajaxUpdate" data="{'a':'json or whatever', 'put whatever here':'ok'}">test</a>
poi con jQuery si può facilmente estrarre i dati e eval, e utilizzarlo nella vostra Ajax
È possibile prelevare una pagina che riporta la struttura JSON con codifica della pagina, come:
var page = {
'elem1': {
'html': '<div>... ',
'update': True
},
'elen2': {
'update': False
e così via, quindi aggiornare quanto necessario, avendo solo un sondaggio.
Mantenere le vostre pagine di elementi di struttura di dati privati e pubblica elementi di aggiornamento
var page = (function(){
var private_data = {
//json
};
return {
workOnData : function(){//process the data}
}
})()
Questo è un buon modo è possibile mantenere le vostre pagine di dati sicuro e regolare.
mi piacerebbe utilizzare jQuery per fare che, se fossi in te o: allora si potrebbe fare qualcosa di simile ...
$('div.updateThisClass').css('color','#fff')