1

我正在加载这个 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>

成功回调中的data以字符串形式接收,一切正常。

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

4

1 回答 1

1

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

$.ajax({
    url : 'collection.handlebars',
    success : function (data) {
        Handlebars.templates["collection"] = Handlebars.compile(data);
    },
    dataType: "text",
    async : false
});
于 2013-05-22T06:54:01.513 回答