2011-10-05 11 views
9

È un modo efficace per popolare una tabella con dati JSON utilizzando jQuery o esiste un metodo migliore/meno costoso? Il numero massimo di righe sarà intorno a 100. Preferirei non utilizzare un plug-in.Compilazione di una tabella da JSON con jQuery

JS:

$.ajax({ 
    url: 'public.json', 
    dataType: 'json', 
    success: function(data) { 
     var row = '<tr class="header">'; 
     for (var i in data.headers) { 
      row += '<th style=""><a href="#" class="sort"><span>' + data.headers[i] + '</span></a></th>'; 
     } 
     row += '</tr>' 
     $(row).appendTo('table.data'); 
     row = ''; 
     for (var i in data.rows) { 
      row += '<tr id="' + i + '">'; 
      row += '<td>' + data.rows[i].date + '</td>'; 
      row += '<td>' + data.rows[i].company + '</td>'; 
      row += '<td>' + data.rows[i].location + '</td>'; 
      ... 
      row += '</tr>'; 
     } 
     $(row).appendTo('table.data'); 
    }, 
}); 

JSON:

{ 
    "headers": { 
     "date": "Date", 
     "company": "Company", 
     "location": "Location", 
     ... 
    }, 
    "rows": [{ 
     "date": "09/18/2011", 
     "company": "Company name", 
     "location": "US", 
     ... 
    }, 
    ... 
} 

EDIT: Essenzialmente, sto cercando di capire se lumping tutte le righe in una stringa, trasformandolo in un oggetto jQuery e quindi aggiungerlo al tavolo è una buona idea, supponendo che questo possa essere fatto più volte nella pagina per aggiornare i dati.

+0

Hai guardato in modelli jQuery - http: //api.jquery .com/categoria/plugin/modelli /? –

+0

Non penso sia opportuno proporre l'uso di un plug-in che è in beta ed è soggetto a modifiche per motivi di produzione. – MacMac

+0

@Floyd "Questi argomenti della documentazione riguardano il plugin di jQuery Templates ** **". L'OP ha dichiarato che non volevano usarne uno. – Bojangles

risposta

7

Piuttosto che il for .. in sintassi e la stringa-building, vorrei utilizzare il jQuery.each() function

Ti piace questa:

$.ajax({ 
    url: 'public.json', 
    dataType: 'json', 
    success: function(data) { 
     var $tr =$('<tr>').addClass('header'); 
     $.each(data.headers, function(i,header){ 
      $tr.append($('<th>').append($('a').addClass('sort').attr('href','#').append($('span').text(header)))); 
     }); 
     $tr.appendTo('table.data'); 
     $.each(data.rows,function(i,row){ 
      $('<tr>').attr('id',i). 
       append($('<td>').text(row.date)). 
       append($('<td>').text(row.company)). 
       append($('<td>').text(row.location)).appendTo('table.data'); 
     }); 
    } 
}); 
+1

Qual è il vantaggio dell'uso di $ .each anziché di ... in? Ho avuto l'impressione che $ .each sia più costoso rispetto a ... in. – Alex

+0

Hai ragione. Non lo sapevo. Potresti usare jQuery piuttosto che creare stringhe, ma dato che la tua domanda riguarda la convenienza, immagino che il tuo codice sia perfetto ... http://jsperf.com/jquery-each-vs-for-loop/6 –

Problemi correlati