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


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

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.

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)

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.