json数据没有显示出来

时间:2017-12-19 21:55:25

标签: javascript jquery json ajax

我有一个json文件,我试图使用以下jquery函数访问。

$.ajax({
    type: 'GET',
    url: '/data/coffee.json',
    dataType:'json',
    success: function(data) {
        let widget = show(data);
        $("#Meals").html(widget);
    }
});

function show(data) {
    let statusHtml = '<ul>';
    $.each(data.prices, function(i, meal){
        statusHtml += '<li> name: '+ meal.item + '</li>';
        statusHtml += '<li> price: '+ meal.price + '</li>';
    });
    statusHtml += '</ul>';
    return statusHtml;
}

我尝试访问的数据如下:

[
  {
    "shopName": "The Coffee Connection",
    "address": "123 Lakeside Way",
    "phone": "16503600708",
    "prices": [
  {
   "item": "Cafe Latte",
   "price": 4.75
  },
  {
   "item": "Flat White",
   "price": 4.75
  },
  {
   "item": "Cappucino",
   "price": 3.85
  },
  {
   "item": "Single Espresso",
   "price": 2.05
  },
  {
   "item": "Double Espresso",
   "price": 3.75
  },
  {
   "item": "Americano",
   "price": 3.75
  }
  ]
 }
]

我尝试过console.log(&#39;成功&#39;,数据);这将返回控制台中的价格数组。但由于某些原因,当我运行此代码时它并没有显示出来。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

data.prices无效。 data是一个数组,因此您需要data[0].prices等。 首先遍历data,该变量将具有price属性。 或者只是使用

function show(data) {
    let statusHtml = '<ul>';
    $.each(data[0].prices, function(i, meal){
        statusHtml += '<li> name: '+ meal.item + '</li>';
        statusHtml += '<li> price: '+ meal.price + '</li>';
    });
    statusHtml += '</ul>';
    return statusHtml;
}

答案 1 :(得分:2)

数据是Array,这应该有效:

$.each(data[0].prices, function(i, meal){
    statusHtml += '<li> name: '+ meal.item + '</li>';
    statusHtml += '<li> price: '+ meal.price + '</li>';
});