簡體   English   中英

獲取AJAX請求並通過JSON循環

[英]Get AJAX Request and Looping Through JSON

我正在使用GET ajax請求從數據庫中檢索一些JSON數據。 我想循環瀏覽並打印某些項目。 例如,我只想打印stylist_1所有地址。 問題在於它僅打印最后一個項目。

代碼如下所示:

var stylist1Addresses;

    function getData() {
        $.ajax({
            url: '/getData',
            type: 'GET',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            async: false,
            success: function (data) {
                for (var i = 0; i < data.stylist_1.length; i++) {
                    stylist1Addresses = data.stylist_1[i];
                }
            }
        });
        console.log(stylist1Addresses);
    }

樣本數據:

{
  "stylist_1": [
    {
      "Address": "1 Stn Main", 
      "Phone": "403-990-9033"
    }, 
    {
      "Address": "474 Cirrus Rd", 
      "Phone": "403-995-3243"
    }, 
    {
      "Address": "1591 Stn St", 
      "Phone": "403-982-8893"
    }
  ], 
  "stylist_2": [
    {
      "Address": "219 Welch Blvd", 
      "Phone": "587-436-3171"
    }, 
    {
      "Address": "374 Main Rd", 
      "Phone": "587-315-9431"
    }, 
    {
      "Address": "564 Main Rd", 
      "Phone": "403-938-9983"
    }
  ]
}

這是兩個可能的解決方案。

第一個解決方案:

var stylist1Addresses;

    function getData() {
        $.ajax({
            url: '/getData',
            type: 'GET',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            async: false,
            success: function (data) {
                for (var i = 0; i < data.stylist_1.length; i++) {
                    stylist1Addresses = data.stylist_1[i];
                    console.log(stylist1Addresses);
                }
            }
        });
    }

這將產生三個控制台日志,每個地址之一。

第二種解決方案:

var stylist1Addresses = [];

function getData() {
    $.ajax({
        url: '/getData',
        type: 'GET',
        contentType: 'application/json; charset=utf-8',
        dataType: 'json',
        async: false,
        success: function (data) {
            for (var i = 0; i < data.stylist_1.length; i++) {
                stylist1Addresses.push(data.stylist_1[i]);
            }
            console.log(stylist1Addresses);
        }
    });
}

這將產生一個控制台日志,該日志包含所有三個地址。

你在找什么

您將在每個循環中更新'stylist1Addresses'變量。

嘗試將“ stylist1Addresses”變量初始化為這樣的數組:

var stylist1Addresses = [];

並替換此行:

stylist1Addresses = data.stylist_1[i];

有了這個:

stylist1Addresses.push(data.stylist_1[i]);

'push'將把每個循環上的項目添加到'stylist1Addresses'數組。

注意:如果只想獲取地址,則應改用此行

stylist1Addresses.push(data.stylist_1[i].Address);

這就是我將僅打印stylist_1中的地址的方式

<script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
<script>
   var $string = '{THE JSON Here}';
   $json = $.parseJSON($string);
   for ( var i in $json ) {
      if ( i === 'stylist_1') {
        var list = $json[i];
        console.log(list[0].Address);
        return;
      }
    }
</script>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM