将数据存储到来自ajax请求中的XML文件的数组

时间:2014-05-23 03:34:51

标签: ajax xml

我有一个XML文件,我需要从中获取数据和文件。将它们存储在一个数组中。不知何故,数组预计不会被创建。我使用each函数循环遍历xml文件。 这是我的代码:

AJAX请求

$.ajax({
    type: "POST",
    url: "products.xml",
    dataType: "xml",
    success: function(xml) {
         $(xml).find('Products').each(function(){
                var proid = $(this).find('ProductID').text();
                var proname = $(this).find('ProductName').text();
                var catid = $(this).find('CategoryID').text();
                var qua=$(this).find('QuantityPerUnit').text();
                var price=$(this).find('UnitPrice').text();
                var products = new Array();
                for(i=0;i<=20;i++){
                    products[i]=new Array();
                    products[i][0]= proid;
                    products[i][1]= proname;
                    products[i][2]= catid;
                    products[i][3]= qua;
                    products[i][4]= price;
                }
            });
        }
        alert(products[0][2]);  // Nothing happens
    });

XML文件示例

<ProductsRoot>
<Products>
<ProductID>1</ProductID>
<ProductName>Chai</ProductName>
<CategoryID>1</CategoryID>
<QuantityPerUnit>10 boxes x 20 bags</QuantityPerUnit>
<UnitPrice>18</UnitPrice>
</Products>
</ProductsRoot>

当我循环浏览each函数时,我希望它能像for loop那样工作,但我看不到的东西。谁能发现错误?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

试试这个:

$.ajax({
type: "POST",
url: "products.xml",
dataType: "xml",
success: function(xml) {
    var products = new Array();
     $(xml).find('Products').each(function(){
            var proid = $(this).find('ProductID').text();
            var proname = $(this).find('ProductName').text();
            var catid = $(this).find('CategoryID').text();
            var qua=$(this).find('QuantityPerUnit').text();
            var price=$(this).find('UnitPrice').text();

            for(i=0;i<=20;i++){
                products[i]=new Array();
                products[i][0]= proid;
                products[i][1]= proname;
                products[i][2]= catid;
                products[i][3]= qua;
                products[i][4]= price;
            }
        });
        alert(products[0][2]);
    }

});

}