Pourquoi générer le HTML en PHP :
- Le JavaScript doit définir le comportement, pas le contenu.
- La création en JavaScript nécessite davantage de balises (les chaînes de caractères à plusieurs lignes ne sont pas aussi faciles à créer qu'en PHP).
- Il est plus difficile à maintenir si votre HTML est généré à plusieurs endroits (PHP et JS).
- Vous pourriez utiliser les fonctions de manipulation du DOM de jQuery pour créer votre HTML, mais vous vous tirez une balle dans la jambe à long terme.
- Il est plus rapide de créer le HTML sur le serveur que sur le navigateur (dans le sens computationnel).
- Le bouclage est plus facile avec PHP - il est facile de générer des balises de table.
- Vous conservez une certaine combativité si l'utilisateur a désactivé JavaScript si vous produisez le balisage au chargement de la page.
Pourquoi générer le HTML en jQuery :
- Vous économiseriez de la bande passante.
- Lier des événements pourrait être plus simple.
Je suis donc favorable à la première option, qui consiste à générer le HTML en PHP.
Comparaison visuelle des deux méthodes, en créant un tableau simple.
Option 1, en utilisant PHP :
// PHP
$html = '<table>';
foreach($data as $row) {
$html .= '<tr>';
$html .= '<td><a href="#" class="button">Click!</a></td>';
$html .= '<td>'.$row['id'].'</td>';
$html .= '<td>'.$row['name'].'</td>';
$html .= '</tr>';
}
$html .= '</table>';
echo $html;
?>
// jQuery
$('#container').load('handler.php', function() {
$('#container a.button').click(function() {
// Do something
});
});
Option 2, utiliser jQuery :
// PHP
echo json_encode($data);
// jQuery
$.ajax({
url: 'handler.php',
dataType: 'json',
success: function(data) {
var table = $('<table />');
var len = data.length;
for(var i = 0; i < len; i++) {
var row = $('<tr />');
var a = $('<a />').attr('href', '#').addClass('button');
row.append($('<td />').append(a));
row.append($('<td />').html(data[i].id);
row.append($('<td />').html(data[i].name);
table.append(row);
}
table.find('.button').click(function() {
// Do something
});
$('#container').html(table);
}
});
Du point de vue de la conception, de la facilité de codage et de l'esthétique, j'opterais pour l'approche PHP.
4 votes
Le HTML en Javascript est horrible.
5 votes
Règle générale : le contenu se trouve du côté du serveur, le comportement du côté du client.
12 votes
Mais le HTML n'est ni du contenu ni du comportement, c'est de la présentation.
0 votes
Si le contenu html et données réelles est trop élevé, utilisez json. Si le ratio html vs radio des données est presque égal, utilisez la génération html côté php.