首頁  >  問答  >  主體

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該怎麼改程式碼呢?

巴扎黑巴扎黑2732 天前833

全部回覆(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
  • 取消回覆