通过AJAX加载Handlebars模板返回文档对象而不是字符串

时间:2013-02-06 16:20:03

标签: ajax handlebars.js

我正在加载此Handlebars.js模板:

<ul></ul>

使用以下代码使用AJAX

$.ajax({
    url : 'collection.handlebars',
    success : function (data) {
        Handlebars.templates["collection"] = Handlebars.compile(data);
    },
    async : false
});

模板编译失败,并在浏览器控制台中显示以下消息:

Uncaught Error: You must pass a string to Handlebars.compile. You passed [object Document] 

调试后我注意到成功回调中返回的data是一个HTML文档,而不是一个字符串。但是,如果我将模板更改为:

<ul></ul> &nbsp

成功回调中的data作为字符串接收,一切正常。

我正在使用Handlebars 1.0 RC2和Chrome 24.有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您需要指定ajax的数据类型:

$.ajax({
    url : 'collection.handlebars',
    success : function (data) {
        Handlebars.templates["collection"] = Handlebars.compile(data);
    },
    dataType: "text",
    async : false
});