0

我正在使用 JQuery 来检索 XML 文件。XML 文件是根据使用 JQuery 传递给它的参数动态生成的 (PHP)。例如,我请求三个 ID 的信息(在本例中:0ZJB001、5YH043、9TQ987)。返回的 XML 文件包含请求的 ID 和找到的项目的列表。然后我根据这些值更改跨度内容。我的工作正常,除非退回的物品比要求的少。因此,如果请求了三个项目并且只返回了两个,则 JQuery 每个语句只执行两次。相反,我需要它为每个 ItemId 执行并从相应的 ASIN 项目中检索详细信息,或者使用一些默认详细信息进行更新。

示例 XML 文件格式(不准确,已简化):

<ItemLookupResponse>
    <Items>
        <Request>
            <ItemLookupRequest>
                <ItemId>0ZJB001</ItemId>
                <ItemId>5YH043</ItemId>
                <ItemId>9TQ987</ItemId>
                <VariationPage>All</VariationPage>
            </ItemLookupRequest>
        </Request>
        <Item>
            <ASIN>0ZJB001</ASIN>
            <OfferSummary>
                <TotalNew>0</TotalNew>
                <TotalUsed>0</TotalUsed>
                <TotalCollectible>0</TotalCollectible>
                <TotalRefurbished>0</TotalRefurbished>
            </OfferSummary>
        </Item>
        <Item>
            <ASIN>9TQ987</ASIN>
            <OfferSummary>
                <LowestNewPrice>
                    <Amount>1000</Amount>
                    <CurrencyCode>USD</CurrencyCode>
                    <FormattedPrice>$10.00</FormattedPrice>
                </LowestNewPrice>
                <TotalNew>1</TotalNew>
                <TotalUsed>0</TotalUsed>
                <TotalCollectible>0</TotalCollectible>
                <TotalRefurbished>0</TotalRefurbished>
            </OfferSummary>
        </Item>
    </Items>
</ItemLookupResponse>

所以最终结果将是(在“伪代码”中):

foreach(Items) {
    if(exists ItemId && ASIN) {
        //update span with price
    } else {
        //update span with default text
    }
}
4

1 回答 1

0

尝试

function callback(xml){
    var itemIds = xml.find('Request ItemLookupRequest ItemId');
    var items = xml.find('Items > Item');

    itemIds.each(function(idx, itemId){
        var item = items.filter(function(idx, item){
            return $(item).children('ASIN').text() == itemId;
        });

        if(item.length){
            //update the span with item.find('FormattedPrice').text()
        } else {
            //update the span with default price
        }
    })
}
于 2013-07-18T03:53:00.217 回答