You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AJAX调用中使用Handlebars渲染页面报错,请求语法排查

解决Handlebars在AJAX调用中渲染的报错问题

你好呀!从你描述的问题和给出的代码片段来看,大概率是这几个地方出了问题,我来帮你梳理下:

首先,最明显的问题:模板里的乱码

你提供的模板代码里有不少乱码内容(比如“scaffold口排Faith… Amy persisted英文 sequencing devise请temp(- UNEx连拍跨”),这些乱码会直接导致Handlebars无法正确解析模板,这是首要需要解决的问题,得先把这些无关的乱码清理掉,保证模板结构干净。

其次,检查Handlebars语法是否完整

从你的代码片段看,只写了{{#each this}},但没有对应的闭合标签{{/each}},Handlebars的块级标签必须成对出现,缺失闭合标签也会触发报错。

给你一个完整的正确示例

我整理了一套能正常运行的代码结构,你可以参考:

1. 页面中的模板和容器

<!-- 渲染结果的容器 -->
<div id="get_art"></div>

<!-- Handlebars模板,注意type是text/x-handlebars-template -->
<script id="artists-template" type="text/x-handlebars-template">
  <ul>
    {{#each this}}
      <li class="i">
        <a class="i" href="{{url}}">
          <img alt="{{name}}" src="{{image}}">
          <span>{{name}}</span>
        </a>
      </li>
    {{/each}}
  </ul>
</script>

2. AJAX调用+模板渲染的JS代码

这里用jQuery的AJAX为例,如果你用原生JS也可以对应调整:

// 先确保已经引入了Handlebars库和jQuery(如果用jQuery的话)
// 发起AJAX请求获取数据
$.ajax({
  url: '/your-api-url', // 替换成你的服务器接口地址
  method: 'GET',
  dataType: 'json',
  success: function(artistsData) {
    // 1. 获取模板的HTML内容
    var templateHtml = $('#artists-template').html();
    // 2. 编译Handlebars模板
    var compiledTemplate = Handlebars.compile(templateHtml);
    // 3. 用数据渲染模板,得到最终HTML
    var renderedHtml = compiledTemplate(artistsData);
    // 4. 将渲染结果插入到指定容器中
    $('#get_art').html(renderedHtml);
  },
  error: function(xhr, status, err) {
    // 错误处理,方便排查问题
    console.log('AJAX请求失败:', err);
    console.log('请求状态:', status);
  }
});

最后,还有几个需要检查的关键点

  • 确认已经在页面中正确引入了Handlebars库(比如通过script标签引入CDN或者本地文件)
  • 服务器返回的JSON数据结构要和模板里的变量对应:比如模板里用了url、image、name,那返回的每个数据项里必须包含这几个字段
  • 模板里的所有块级标签(比如{{#each}}、{{#if}})都要记得闭合,不能只写开头不写结尾

内容的提问来源于stack exchange,提问作者Kokox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:29:25