Skip to content

'Uncaught Syntax error, unrecognized expression:' with jQueryMustache.js when template output is empty #1

Description

@gonzalad

When the output of a jQuery template is empty, executing 'mustache' function raises Uncaught Syntax error, unrecognized expression.

Here's a test script to reproduce the error :

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <script type="text/javascript" src="jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="mustache.js"></script>
    <script type="text/javascript" src="jQueryMustache.js"></script>
    <script type="text/javascript">
    $(function() {
        var emptyData = {"clients": []}; //-> KO
        var testData = {"clients": [
                 {
                  "personne": {
                      "nom": "THOMAS",
                      "adresseResidence": {
                          "codePostaln": "12000",
                          "rue": "7, Avenue du Maréchal Foch",
                          "villen": "Arpajon-sur-Cère",
                          "codePostal": "12000",
                          "ville": "Arpajon-sur-Cère",
                          "id": 1,
                          "version": null
                      },
                      "dateNaissance": "1975-05-16",
                      "matricule": "00000000",
                      "prenom": "Olivier",
                      "deuxiemePrenom": "Pierre",
                      "nomMarital": null,
                      "numeroSecuriteSociale": "176081501409491",
                      "id": 1,
                      "version": null
                  },
                  "dateContact": 1314605754000,
                  "rib": "000",
                  "id": 1
              } ]
          };
        $('#clientsList').html($('#templateClients').mustache(emptyData));
    });
    </script>
</head>
<body>
 <script id="templateClients" type="x-tmpl-mustache">
        {{#clients}}
            <li>
                <a href="${ctx}/clients/{{id}}" class="ui-commandlink">{{#personne}}{{nom}}{{/personne}}&nbsp;{{#personne}}{{prenom}}{{/personne}}</a>
            </li>
        {{/clients}}
</script>
    <ul id="clientsList">
        <li>
        </li>
    </ul>
</body>
</html>

To resolve this issue, change follogin line in jQueryMustache.js :

return $(Mustache.to_html(this.text(), data, partial, stream));

with :

return Mustache.to_html(this.text(), data, partial, stream);

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions