3

我在 ASP.NET 页面上使用 JQuery 创建脚本。有一个如下所示的 JSON 字符串:

<input id="hfImages" type="hidden" value="[
{"ProductID": "000001",
 "Small": "http://myimages.com/images/I/75.jpg",
 "Medium": "http://myimages.com/images/I/160.jpg",
 "Large": "http://myimages.com/images/I/320.jpg",
 "Thumb": "http://myimages.com/images/I/30.jpg"},

{"ProductID": "000002",
 "Small": "http://myimages.com/images/I/75ab.jpg",
 "Medium": "http://myimages.com/images/I/160j.jpg",
 "Large": "http://myimages.com/images/I/320y.jpg",
 "Thumb": "http://myimages.com/images/I/30ii.jpg"},

{"ProductID": "000003",
 "Small": "http://myimages.com/images/I/75.jpg",
 "Medium": "http://myimages.com/images/I/160.jpg",
 "Large": "http://myimages.com/images/I/320.jpg",
 "Thumb": "http://myimages.com/images/I/30.jpg"}
]"/>

我从这个字符串创建一个对象:

var images = $.parseJSON($("#[id*='hfImages']").val());

有一个调用的 varProductID包含我需要从这个 JSON 字符串中获取的“ProductID”的值,但我不知道该怎么做。最终(一旦我从这个字符串中检索到正确的数据),我希望能够做这样的事情:

$("#productImages img.small").src(image[0].Small)
$("#productImages img.medium").src(image[0].Medium)
$("#productImages img.large").src(image[0].Large)
$("#productImages img.thumb").src(image[0].Thumb)

我已经看到循环遍历 JSON 对象直到找到所需的“键”的示例,但我认为有一种更简单的方法可以使用.filteror .map

我对 Javascript/JQuery 和 JSON 非常陌生。好像我有一个名为“ProductID”的,但我正在阅读的所有内容都不是指一个键。好像,名称/值中的每个名称都被视为一个键。

我找到一个如何做到这一点的好例子的问题可能与我不知道这里涉及的所有内容的正确术语有关。

鉴于所需的 ProductID 作为字符串存储在 var ProductId 中,有人可以在 JQuery 中向我展示如何从上述 JSON 中获取对象的示例吗?(var ProductID = "000002";)

我也很感激任何关于 JSON 和 JQuery 的良好参考的链接。我去过 json.org 和其他几个网站,但就我的知识水平而言,它们并不是很有帮助。:S

4

1 回答 1

3

如果要查找具有给定产品 ID 的相应元素,可以使用该.grep()函数。

像这样:

var productID = '000002';
var images = $.parseJSON($("#[id*='hfImages']").val());
var filteredImages = $.grep(images, function() {
    return this.ProductID == productID;
});

if (filteredImages.length > 0) {
    // at least one element inside the images array matched the filter criteria
    var product = filteredImages[0];

    // you could use product.Small, product.Medium, ... here
}
于 2012-06-23T21:26:11.097 回答