awe*_*san 4 javascript json shopify
我正在尝试使用以下网址中的 id 访问特定产品,
https://tempstore.myshopify.com/products/1234.json
Run Code Online (Sandbox Code Playgroud)
它给了我 404 错误。
尽管如此,我可以访问以下所有产品:
https://tempstore.myshopify.com/products.json
Run Code Online (Sandbox Code Playgroud)
我必须访问刚刚在结帐过程中处理的产品。
我的 id 如下:
var products = Shopify.checkout.line_items;
Run Code Online (Sandbox Code Playgroud)
products将仅包含在结账时处理的产品 ID 数组。
现在我需要访问这些产品的所有其他属性。
我肯定可以做到这一点:
https://tempstore.myshopify.com/admin/products/1234.json
Run Code Online (Sandbox Code Playgroud)
但它需要身份验证。
有什么想法吗?
从前端,您需要拥有产品句柄才能获取 JSON 对象:
https://tempstore.myshopify.com/products/[handle].js
Run Code Online (Sandbox Code Playgroud)
或者
https://tempstore.myshopify.com/products/[handle].json
Run Code Online (Sandbox Code Playgroud)
.js(请注意,从和端点返回的值.json彼此有很大不同!)
正如您所指出的, Shopify.checkout.line_items 对象数组仅包含产品 ID,而不包含产品句柄。不过,我们也不是完全运气不好,因为我们可以通过访问端点来获取商店中的整个产品列表,包括产品句柄/products.json。
当然,这意味着获取一个潜在的巨大 JSON 对象只是为了获取我们应该包含在结账订单项中的信息...但是除非结帐页面上有可用的订单项信息的其他来源,否则循环遍历整个列表可能就是您需要做的。
所以你的最终代码看起来像这样:
Checkout.jQuery.getJSON( // Or whatever your preferred way of getting info is
'https://tempstore.myshopify.com/products.json',
function(prodlist){
for(var p = 0; p < prodlist.length; p++){
var prod = prodlist[p];
// Find if Shopify.checkout.line_items contains prod.id, left as exercise for the reader
if(found){
Checkout.jQuery.getJSON(
'https://tempstore.myshopify.com/products/' + prod.handle + '.js',
function(product){
/* Whatever needs to be done */
})
}
}
}
)
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
3315 次 |
| 最近记录: |