【问题标题】:Wrong JSON Data being returned within ShopifyShopify 中返回了错误的 JSON 数据
【发布时间】:2020-07-08 20:00:12
【问题描述】:

我创建了一个 Shopify 替代模板,该模板返回集合中产品的自定义 JSON,以便我可以将自定义元字段存储在对象中以在 jQuery 中使用。

我已经设置了我的 AJAX GET 调用和正确的 URL,但是当我去测试 GET 调用的响应时,不是从提供的 URL 返回自定义 JSON,它只是返回标准 Shopify 集合 JSON您可以从 (store_url)/collections/(collection_name).json 中看到。

为什么没有从 URL (store_url)/collections/(collection_name) 返回响应?view=filter-json

(filter-json 是返回自定义 JSON 的液体模板)

var coll_url = window.location.href;

$.ajax({
        type: 'GET',
        url: coll_url,
        data: {
            'view': 'filter-json'
        },
        dataType: "json",
        success: function(res){
          
            console.log(res);
            console.log(this.url);
          
        },
        error: function(status){
             alert(status);
        }
    })

Image of a (collection_url)?view=filter-json link

Image of returned console log upon action on the page

【问题讨论】:

  • 如果您直接在{shopify-collection-url}?view=filter-json 浏览器中尝试此 URL,这会返回预期的 JSON 吗?如果没有,从那里开始。
  • 确实如此。它返回预期的 JSON,所有字段都正确填写,并且集合页面中的所有产品都存在。
  • 可以分享网址吗?
  • 不幸的是,它是在我们生产方面的预览主题上。我将在下面发布一些屏幕截图,显示控制台和从 ?view=filter-json 返回的 JSON。

标签: json ajax shopify


【解决方案1】:

在这种情况下,Shopify 比你更聪明,它给你的是他们认为你想要的数据,而不是你真正想要的价值。

每当您对期望响应类型为“application/json”的产品页面进行 AJAX 调用时,如果您忘记使用“.js”或“.json”结束页面请求,Shopify 将有助于“纠正”您的疏忽并返回该产品的默认 JSON 对象。通过在您的请求中将dataType 设置为json,jQuery 会自动设置这些请求标头,因此最终结果是所有这些有用的行为都完全误解了您的请求。

要访问您的自定义端点,您需要在没有json 类型的情况下请求它以将自定义页面的内容作为纯文本检索,然后使用JSON.parse 将响应数据转换为可用对象。

祝你好运!

【讨论】:

  • 是的,这绝对比我聪明。删除了 dataType: json 所以它返回纯文本然后解析纯文本并接收正确的对象。谢谢!!
  • 不客气!这是 Shopify 的一个未记录的功能,我经常忘记它,几乎每次都会咬我
猜你喜欢
  • 2019-03-24
  • 1970-01-01
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多