0

我是 JSON 新手,正在尝试找到一种方法来查询 JSON 数据并将信息带到<div>我页面上的适当位置。我正在使用 Volusion,所以对代码的访问是有限的(它主要是从服务器端脚本动态生成的),所以我不得不做一些变通方法。基本上有一个产品表,获取产品代码的唯一方法是从这些产品的锚标签上生成的 URL 中获取它(每个产品都设置有一个链接,例如,/ ProductDetails.asp?ProductCode=aroma 用于芳香产品)。我编写了 Javascript 来提取产品代码(从 URL 的末尾)并将其设置为名为 productCode 的变量。

在我的 JSON 数据中,我将其设置为:

[
    {
        "item": "aroma",
        "title": "Aromatherapy Oils",
        "price": "$10.00",
    },

    {
        "item": "ah-chairbamboo",
        "title": "Modern Bamboo Chair",
        "price": "$100.00",
    },
    {
        "item": "hc-mirror",
        "title": "Cordless LED Lighting Pivoting Vanity Mirror",
        "price": "$45.00",
    },
    {
        "item": "macfrc",
        "title": "French Macarons",
        "price": "$15.00",
    }
]

如果我想从 JSON 表中获取标题,其中“aroma”是项目并将其附加到 div 中的产品容器中怎么办?我的代码现在获取产品代码的方式是:

$(".v65-productDisplay a").each(function(){
    var productHref = $(this).attr("href");
    var productCode = productHref.substring(19,productHref.length);

这是有效的,因为我已经提醒了 productCodes 并且它们都是正确的。

我希望这个 JSON 查询显然在每个函数中,以便它在页面上的每个产品上运行。用英语,我想说“如果项目值与 JSON 表中的产品代码匹配,我想打印出那个标题和价格”(是的,我知道这不是很好的英语......)。

我第一次查询它(并提醒值)失败的尝试是在这里。这是在:

$(".v65-productDisplay a").each(function(){
var productHref = $(this).attr("href");
var productCode = productHref.substring(19,productHref.length);

$.getJSON("/v/vspfiles/data/productinfo.js", function (data) {
            $.each(data, function () {
                  if (productCode = this['item'])
                     alert(this['price']); 
            });
        });

});

但这没有用。抱歉,如果这令人困惑,我正在尝试自己解开它。非常感谢您的帮助。


编辑

下面是 PSCoder 的回答之后的一个新的更新片段,但仍然不能完全正常工作:

$.getJSON("/v/vspfiles/data/productinfo.js", function (data) {
        $.each(data, function (i,o) {
              if (productCode == o.item)
                 alert(o.price); 
        });
    });
4

1 回答 1

0

你可以这样做:

$.getJSON("/v/vspfiles/data/productinfo.js", function (data) {
            $.each(data, function () {
                  if (productCode.trim() === this.item)
                     console.log(this['price']); 
            });
        });
于 2013-04-22T23:55:29.457 回答