Handlebars XML解析Firefox中的错误

时间:2018-02-23 20:37:06

标签: javascript jquery ajax xml handlebars.js

我是车把的新手,刚开始将其应用到我的解决方案中。一切进展顺利,但我只在Firefox的控制台中出现错误(开发人员版和普通版)。我想先说我写HTML而不是XML。

XML Parsing Error: undefined entity Location: http://127.0.0.5/templates/attachments.hbs?cacheBust=3 Line Number 5, Column 77:

这只是我得到的许多不同错误中的一个。这个是由html实体 引起的。这是Firefox制作的参考资料的屏幕截图(我假设它的颜色与红色不相似)。 Firefox Image

我或者从根本上误解了车把上的{{#each}},或者其他错误。就像为什么我的模板被解析为XML? 这是我的模板:

<div>
<table>
{{#each attachments}}
<tr>
    <td class="options-attachment-link"><i class="fa fa-paperclip">&nbsp;</i><a href="/api/upload/display_file?file={{this.internalName}}&amp;Id={{this.Id}}">{{this.customerName}}</a></td>
</tr>
{{/each}}
</table>

这是我的JS处理把手的编译:

var attachmentsPromise = $.get('/api/upload/get_attachments/id/'+Id);
var attachmentsTemplatePromise = $.get('/templates/attachments.hbs?cacheBust=3');
attachmentsPromise.done(function(attachmentsData){
    attachmentsTemplatePromise.done(function(attachmentTemplate){
        var template = Handlebars.compile(attachmentTemplate);
        var data = template({attachments: attachmentsData});
        $(myDiv).html(data);
    });
});

请注意:一切正常。例如,它仍然呈现&nbsp;。这只是firefox控制台中的错误 感谢任何帮助,谢谢!

编辑: 对于可能偶然发现这种情况的任何人,我可以通过在视图加载类型为type="text/x-handlebars-template"的情况下将所有把手模板包含在自己的脚本标记中来创建一些新视图。然后我编译并渲染某些点击事件。我也在脚本标记中包含了HTML实体字符&equals;,并且不再出现任何控制台错误。那么它可能与AJAX如何将数据返回到视图有关?

1 个答案:

答案 0 :(得分:0)

遇到类似情况,发现html响应的标题中没有content type字段。将内容类型添加为text / html可以解决此问题 例如

Content-Type: text/html;charset=UTF-8