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 = '<div>店名:' + item.food + '人均:' + item.price + '</div>';
            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该怎么改代码呢?

阅读 3.7k
5 个回答
$.getJSON("json/food.json", function(data) {
       $.each(data.recommendation, function(i, item) {
            var str = '<div>店名:' + item.food + '人均:' + item.price + '</div>';
            document.write(str);
       });
  });

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

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

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

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

500 是服务器端出错了

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题