繁体   English   中英

如何在 AJAX 中迭代嵌套的 API 响应?

[英]How do I iterate nested API response in AJAX?

我正在尝试迭代嵌套的 API 响应并将它们显示在 html 中。 我设法做单个图像,因为响应只有一个值。

**API 响应**

{"result":{"totalResults":5861511,"products":[{"productTitle":"S-XL Plus Size Tunic Autumn <font><b>Women</b></font> Dresses Casual Cartoon Print Christmas Dress Casual Loose Long Sleeve Party Dress Vestidos","originalPrice":"US $7.98","imageUrl":"https://ae01.alicdn.com/kf/H3ba2899c892d4a88a5f704453c39942ae/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg","productUrl":"https://www.aliexpress.com/item/S-XL-Plus-Size-Tunic-Autumn-Women-Dresses-Casual-Cartoon-Print-Christmas-Dress-Casual-Loose-Long/4000353066650.html","allImageUrls":"https://ae01.alicdn.com/kf/H3ba2899c892d4a88a5f704453c39942ae/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/H218b19ee8bfc4f6ebe74b4297ca8395f5/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/H14b48746d6eb4d5788a7a9f6ce37195c7/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/Hb4b1f8b6223d4e7c88208751bfa681886/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/Hcfd17f95ac85470d9550d13f3683adc1I/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg}]},"errorCode":20010000,"currentPageNum":0,"totalPageNum":0}

main.js


    $(function (){

        var $orders = $('#orders');
        var $productimage = $('#productimage');
        var $output = $('#output');

        $.ajax({
            type: 'GET',
            url: 'http://gw.api.alibaba.com/openapi/param2/2/portals.open/api.listPromotionProduct/9420?fields=productUrl,allImageUrls,imageUrl,originalPrice,productTitle&keywords=women',
            success: function(orders){
                $.each(orders, function(i, order){

                    $orders.append('<a href="' + order.products[0].productUrl + '">' + order.products[0].productTitle + '</a>');
                    $output.append(order.products[0].allImageUrls[1]);

                    // $productimage.append('<img class="pic-1" src="' + order.products[0].imageUrl + '">');  // single image

                });
            }
        });


    });

结果生成

"t"

如何从allImageUrls$output创建一个循环?

$.each(orders, function(i, order) {
   $orders.append('<a href="' + order.products[0].productUrl + '">' + order.products[0].productTitle + '</a>');
      //------------------------Start 
      var allImageUrlsArray = []; // Create array;
      //split with comma, assign to varaible and loop it.
      allImageUrlsArray = order.products[0].allImageUrls.split(',');
      for (var i = 0; i < allImageUrlsArray.length; i++) {
          $output.append(allImageUrlsArray[i]);
      }
      //---------------------------End 

});

您在迭代 JSON Object 时犯了一些错误,并且 allImageUrls 包含多个带逗号(,)的图像,因此您应该将其转换为数组。 让我们看看下面的例子

LN: 21 你可以循环 allImageUrls

for([k, v] of Object.entries(value.allImageUrls)){
  console.log(k, v);
}

 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="orders"></div> <script> $(function() { var $orders = $('#orders'); var $productimage = $('#productimage'); var $output = $('#output'); $.ajax({ type: 'GET', url: 'https://gw.api.alibaba.com/openapi/param2/2/portals.open/api.listPromotionProduct/9420?fields=productUrl,allImageUrls,imageUrl,originalPrice,productTitle&keywords=women', success: function(item) { let orders = item.result.products; orders = orders.map(product => { product.allImageUrls = product.allImageUrls.split(','); return product; }); var con = ''; for ([key, value] of Object.entries(orders)) { con += "<li><a href='" + value.productUrl + "'><img style='width: 30px;' src='" + value.allImageUrls[0] + "'/>" + value.productTitle + "</a></li>"; // Loop all images for ([k, v] of Object.entries(value.allImageUrls)) { console.log(k, v); } } $orders.append("<ul>" + con + "</ul>"); } }); }); </script>

您需要拆分 allImageUrls,然后在循环中运行它们,如下所示:

 var result ={ "result": { "totalResults": 5861511, "products": [ { "productTitle": "S-XL Plus Size Tunic Autumn <font><b>Women</b></font> Dresses Casual Cartoon Print Christmas Dress Casual Loose Long Sleeve Party Dress Vestidos", "originalPrice": "US $7.98", "imageUrl": "https://ae01.alicdn.com/kf/H3ba2899c892d4a88a5f704453c39942ae/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg", "productUrl": "https://www.aliexpress.com/item/S-XL-Plus-Size-Tunic-Autumn-Women-Dresses-Casual-Cartoon-Print-Christmas-Dress-Casual-Loose-Long/4000353066650.html", "allImageUrls": "https://ae01.alicdn.com/kf/H3ba2899c892d4a88a5f704453c39942ae/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/H218b19ee8bfc4f6ebe74b4297ca8395f5/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/H14b48746d6eb4d5788a7a9f6ce37195c7/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/Hb4b1f8b6223d4e7c88208751bfa681886/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg,https://ae01.alicdn.com/kf/Hcfd17f95ac85470d9550d13f3683adc1I/S-XL-Plus-Size-Tunic-Autumn-font-b-Women-b-font-Dresses-Casual-Cartoon-Print-Christmas.jpg" } ] }, "errorCode": 20010000, "currentPageNum": 0, "totalPageNum": 0 } var allImagesList = result.result.products[0].allImageUrls.split(','); allImagesList.forEach((imageUrl)=>{ console.log(imageUrl); })

您的代码将如下所示:

    $(function (){

            var $orders = $('#orders');
            var $productimage = $('#productimage');
            var $output = $('#output');

            $.ajax({
                type: 'GET',
                url: 'http://gw.api.alibaba.com/openapi/param2/2/portals.open/api.listPromotionProduct/9420?fields=productUrl,allImageUrls,imageUrl,originalPrice,productTitle&keywords=women',
                success: function(orders){
                    $.each(orders, function(i, order){

                        $orders.append('<a href="' + order.products[0].productUrl + '">' + order.products[0].productTitle + '</a>');
                        $output.append(order.products[0].allImageUrls[1]);

var allImagesList = order.products[0].allImageUrls.split(',');
allImagesList.forEach((imageUrl)=>{
$productimage.append('<img class="pic-1" src="' + imageUrl + '">');  // single image
})


                    });
                }
            });


        });

 $(function() { var $orders = $('#orders'); var $productimage = $('#productimage'); var $output = $('#output'); $.ajax({ type: 'GET', url: 'http://gw.api.alibaba.com/openapi/param2/2/portals.open/api.listPromotionProduct/9420?fields=productUrl,allImageUrls,imageUrl,originalPrice,productTitle&keywords=women', success: function(orders) { $.each(orders.result.products, function(i, order) { console.log(order) $div = $('<div id = "' + "order_" + i + '"></div>'); $imageDiv = $('<div id = "' + "image_" + i + '"></div>'); // = $('#order_' + i); console.log($div) $div.append('<a href="' + order.productUrl + '">' + order.productTitle + '</a>'); //; var array = order.allImageUrls.split(','); for (var j = 0; j < array.length; j++) { //$output.append(order.allImageUrls[j]); $imageDiv.append('<img style="width:50px;height:50px" class="pic-1" src="' + array[j] + '">'); // single image } $div.append($imageDiv); $orders.append($div); }); } }); });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="output"> <div id="orders"> </div> </div>

希望这可以帮助。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM