type - risposte ajax html vs xml/json-prestazioni o altri motivi




stringify json object (6)

Al momento sto lottando anche con questa decisione e non ho fatto clic finché non ho visto come Darin lo ha ridotto:

"Se i dati verranno utilizzati al di fuori dell'applicazione, l'HTML potrebbe essere più difficile da analizzare e adattare in un'altra struttura"

Penso che molto sia dove / come stanno andando i dati. Se si tratta di un'applicazione one-off che non ha bisogno di condividere / inviare dati da nessun'altra parte, sputando HTML puro va bene, anche se ne sopporta di più.

Personalmente, se c'è un HTML complesso da avvolgere attorno ai dati, sputo solo il codice HTML e lo butto dentro. JQuery è dolce e tutto, ma costruire HTML con Javascript è spesso un problema. Ma è un gioco di equilibrio.

https://code.i-harness.com

Ho un sito abbastanza oneroso e alcune pagine in formato 3k html sono inserite nel DOM da richieste Ajax.

Quello che ho fatto è prendere le risposte HTML e inserire l'intera cosa usando jQuery.

La mia altra opzione è quella di produrre in xml (o forse json) e quindi analizzare il documento e inserirlo nella pagina.

Ho notato che sembra che il sito più grande faccia cose json / xml. Google Mail restituisce xml anziché html formattato.

È dovuto alle prestazioni? o c'è un altro motivo per usare xml / json vs semplicemente recuperando html?

Da un punto di vista javascript, sembrerebbe che iniettare direttamente html sia il più semplice. In jQuery, lo faccio solo

jQuery.ajax({
    type: "POST",
    url: "getpage.php",
    data: requestData,
    success: function(response) {
        jQuery('div#putItHear').html(response);
    }

con una risposta xml / json dovrei fare

jQuery.ajax({
    type: "POST",
    url: "getpage.php",
    data: requestData,
    success: function(xml) {
        $("message",xml).each(function(id) { 
            message = $("message",xml).get(id); 
            $("#messagewindow").prepend("<b>" + $("author",message).text() + 
            "</b>: " + $("text",message).text() + 
            "<br />"); 
        });
    }
});

chiaramente non così efficiente dal punto di vista del codice, e non posso aspettarmi che si tratti di una migliore prestazione del browser, quindi perché fare le cose nel secondo modo?


Dovresti dare un'occhiata a Pure , uno strumento per la creazione di template per generare HTML dai dati JSON.


Generalmente JSON è un modo più efficiente per recuperare i dati tramite ajax poiché gli stessi dati in XML sono molto più grandi. JSON è anche più facilmente consumato dal tuo lato client Javascript. Tuttavia, se stai recuperando contenuti puramente HTML, probabilmente farei come suggerisci tu. Sebbene, se fosse davvero necessario, potresti incorporare il tuo contenuto HTML all'interno di una stringa JSON e ottenere il meglio da entrambi i mondi


In alcuni casi, le risposte AJAX devono restituire più informazioni rispetto al solo HTML da visualizzare. Ad esempio, supponiamo che tu stia restituendo un elenco dei primi venti elementi da una ricerca. Potrebbe essere necessario restituire il numero totale di risultati della ricerca da visualizzare da qualche altra parte nel DOM. Potresti provare a trascinare il conteggio totale in un div nascosto, ma questo può diventare disordinato. Con JSON, il conteggio totale può essere semplicemente un valore di campo una risposta JSON strutturata.


Per me si riduce a questo:

È per molti di noi, molto meno lavoro da utilizzare su un server, maturo, motore di template a cui siamo abituati, per generare html e inviarlo via pipe, piuttosto che usare un po 'di codice javascript per generare lato client HTML. Sì, ora ci sono alcuni motori di template per javascript che potrebbero attenuarlo un po '.

Dal momento che ho già separato lato server, logica e visualizzazioni, non vi è alcun argomento nell'avere un'altra separazione. JSON è una vista, l'HTML è un'altra vista.

E lasciamolo affrontare; sia HTML / AJAX che JSON / AJAX sono molte volte migliori di una pagina intera sulla pipe.

L'ultima cosa a cui forse devi pensare è; se vuoi essere amichevole con i motori di ricerca, potresti dover generare il lato server HTML in qualsiasi modo (il vecchio degrado con garbo mantra).

Di solito faccio una combinazione. Se c'è logica lato client, io uso JSON - altrimenti io uso HTML. Le notifiche e i campi speciali di completamento automatico vengono inviati tramite JSON.


Restituire JSON / XML offre all'applicazione maggiore libertà rispetto al ritorno dell'HTML e richiede conoscenze meno specifiche in campi diversi (data vs markup).

Poiché i dati sono ancora solo dati, si lascia la scelta su come visualizzarli sul lato client delle cose. Ciò consente di eseguire gran parte del codice sul lato client anziché sul server: il lato server deve conoscere solo le strutture dati e nulla sul markup. Tutto ciò che il programmatore deve sapere è come fornire strutture di dati.

L'implementazione del client ha solo bisogno di sapere come visualizzare le strutture dati restituite dal server e non deve preoccuparsi di come queste strutture vengano effettivamente create. Tutto quello che il programmatore deve sapere è come mostrare le strutture di dati.

Se si deve costruire un altro client (che non utilizza l'HTML come linguaggio di markup), tutti i componenti del server possono essere riutilizzati. Lo stesso vale per la costruzione di un'altra implementazione del server.





json