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

如何用Ajax渲染Liquid代码并输出为HTML?Shopify购物车开发问题

问题解答

可以通过Ajax获取Shopify渲染后的Liquid HTML内容,你当前的问题是没正确处理section渲染接口的返回格式。

问题原因

当你调用/?sections=line-item-list接口时,Shopify返回的是JSON对象,而非直接的HTML字符串。结构大致如下:

{
  "sections": {
    "line-item-list": "<div>渲染后的订单项HTML</div>"
  }
}

你之前设置dataType: 'html'会导致jQuery尝试把JSON当成HTML解析,自然得不到正确结果。

修正代码

把Ajax请求的dataType改为json,并从返回的JSON中提取对应section的HTML内容:

<div class="add-line-item">Add Line Item</div>
<div class="line-items"></div>

<script>
  $(document).ready(function() {
    $('.add-line-item').on('click', function() {
      $.ajax({
        url: '/?sections=line-item-list',
        type: 'GET',
        dataType: 'json', // 改为json类型
        success: function(data) {
          // 提取line-item-list对应的HTML并插入
          if (data.sections && data.sections['line-item-list']) {
            $('.line-items').html(data.sections['line-item-list']);
          }
        },
        error: function(jqXHR, textStatus, errorThrown) {
          console.error("Error fetching line-item-list content:", errorThrown);
        }
      });
    });
  });
</script>

额外注意事项

  • 确保line-item-list.liquid中metafield的访问路径正确:item.product.metafields.custom.some-metafield里的custom是命名空间,some-metafield是键名,必须和你在Shopify后台设置的metafield完全匹配(包括大小写和连字符)。
  • 如果需要在添加商品到购物车后同步更新迷你购物车,建议在商品添加成功的回调里再触发这个section请求,这样能拿到最新的购物车订单项数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:28:31