首页  >  问答  >  正文

javascript - jQuery ajax无法获取复杂的json?

JSON文件代码如下:

[
{
"name":"炭火烤肉",
"imgsrc":"img/classification.jpg",
"average":167,
"address":"综合楼3楼",
"classify":"bbq",
"recommendation":[
{"food":"和牛拼盘","price":198},
{"food":"精选套餐","price":320},
{"food":"特选牛舌","price":58}
]
}
]

script代码如下:

$.ajax({
   url: "json/food.json",
   type: "post",
   dataType: "json", 
   success: function(data) {
       $.each(data.recommendation, function(i, item) {
            var str = '<p>店名:' + item.food + '人均:' + item.price + '</p>';
            document.write(str);
       })
   },
   error : function(XMLHttpRequest, textStatus, errorThrown) {
    alert(XMLHttpRequest.responseText); 
           alert(XMLHttpRequest.status);
           alert(XMLHttpRequest.readyState);
           alert(textStatus); // parser error;
} 
});

目前的问题是:
$.each()函数里的data.recommendation貌似不能这么用(?),alert显示“内部服务器错误”,错误代码是500,4。
尝试着改成data并把后面的item.food ,item.price改成item.name,item.average能正常获取json(json路径没错)。那如果我想获取recommendation里的food和price该怎么改代码呢?

巴扎黑巴扎黑2681 天前786

全部回复(5)我来回复

  • 漂亮男人

    漂亮男人2017-05-19 10:36:09

    $.getJSON("json/food.json", function(data) {
           $.each(data.recommendation, function(i, item) {
                var str = '<p>店名:' + item.food + '人均:' + item.price + '</p>';
                document.write(str);
           });
      });

    (其实我觉得把post那行删了应该就没问题了,这么写其实就是省字)

    回复
    0
  • 为情所困

    为情所困2017-05-19 10:36:09

    你上面的json文件里面是一个数组,所以需要访问data[0].recommendation,才能访问到数据;你可以用console.log(data)是一个[object],这样你就知道怎么解决了。

     $.each(data[0].recommendation, function(i, item) {
                var str = '<p>店名:' + item.food + '人均:' + item.price + '</p>';
                document.write(str);
           })

    回复
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-19 10:36:09

    这个json并不复杂,500的话可能先确定是不是服务器问题

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-19 10:36:09

    500 是服务器端出错了

    回复
    0
  • 阿神

    阿神2017-05-19 10:36:09

    AJAX回调成功后,用console.log(data)先看看服务器传过来的,和你想要的数据是不是一致。
    其实500错误,就是服务器错误,和$.each()怎么用没半毛钱关系,别人是无辜的

    回复
    0
  • 取消回复