Comparer deux code HTML (Réponse ajax)

Par remy76690, il y a 9 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je cherche à comparer deux code html, pour vérifier si la réponse ajax est identique au code html déjà présent.

function updateGroup(){ var $past = $('#viewGroups'); var $getHtml = $past.html(); var $url = $past.attr("data-ajax"); $.ajax({ url: $url, response: 'HTML' }).done(function (data) { console.log($getHtml); console.log(data); if($.trim($getHtml) === $.trim(data)){ alert(); } else{ } }); }

Ce que je veux

Par exemple, si les deux code html sotn identiqe, il me renvoie une alert. (Sa permet de afficher plus ou moin en temps réel les modifications de la liste des groupes)

Ce que j'obtiens

Il ne concidere pas le code html exactement comme celui déjà présent, voici le résultat :

<table class="table table-striped table-hover table-collapse"> <thead> <tr> <th>Nom</th> <th>Nombre de membre</th> <th class="t-right">Action</th> </tr> </thead> <tbody> <tr><td style="color: rgba(139, 32, 33, 1); text-align: center;" colspan="100%">Aucun</td></tr> </tbody> </table> group.js:168:13 <table class="table table-striped table-hover table-collapse"> <thead> <tr> <th>Nom</th> <th>Nombre de membre</th> <th class="t-right">Action</th> </tr> </thead> <tbody> <tr><td style='color: rgba(139, 32, 33, 1); text-align: center;' colspan='100%'>Aucun</td></tr> </tbody> </table> group.js:169:13

Merci pour votre aide.
Cordialement;

PS : Trim, j'ai essaye, ça ne fonctionne pas dans mon cas.

4 réponses

Huggy, il y a 9 ans

Affiche les 2 versions et regarde ce qui diffère (désolé si c'est trop évident)
possible que cela vienne des double quotes converties en simples quotes

remy76690, il y a 9 ans

Bien vue, et effectivement, il y a bien un qui affiche double quottes et l'autre non

EDIT :

Après vérification, ce n'est pas ça le problème.

MaximaxouSlider, il y a 9 ans

Bonjour,
Les espaces, tabulations, etc, sont-ils les mêmes ? Et les retours à la ligne sont-ils du même type ? (soit \r\n soit \n)

betaWeb, il y a 9 ans

Salut,

Je pense que @MaximaxouSlider tient une piste : il faudrait formater tes 2 chaines HTML de la même façon afin d'en éliminer les éventuels artefacts.
Ce que tu peux faire pour chaque chaine HTML, éventuellement, c'est :

/* Code non testé ! */ var html = /* ta chaine HTML */; html = JSON.stringify(html);

En les 'stringifiant', elles auront un formatage identique normalement (je ne suis pas sur de mon coup).
Après, il faudrait trouver un moyen de les minifier pour virer tous les espaces, \n,\t etc.