For循环在和之间中断,只返回一个值



下面的API调用返回5家餐厅的预期数据,但显示信息的for循环只返回info[0],然后停止。我试过删除preventDefault,但似乎没有什么区别。控制台中没有错误。有什么想法吗?

$(document).on("click", "#thisShow", function (event) {
event.preventDefault()
var loc= $(this).attr("city")
var yelpURL = "https://cors-anywhere.herokuapp.com/https://api.yelp.com/v3/businesses/search?location="+ loc +"&term=restaurants&limit=5";
var apiKey = "Yu1G5QxtO5YUFSh4YZMpbCWkVfstUvpnMirspGbNWj88cLXUw3rxgqrk7G9Kpkkxx_qic8LWkb9JeOeRnnpjZkXEo4s0TXtYPCCZj7DNZ3zwn2WNlb7QoXvBHnZ5XnYx"
console.log(yelpURL)
$.ajax({
url: yelpURL,
method: "GET",
dataType: "json",
headers: {
"Authorization": `Bearer ${apiKey}`
}
}).then(function (res) {
var info =res.businesses
console.log(info)
console.log(res.businesses[0].name)
res=res
console.log(info.length)
for (var i = 0; i < info.length; i++){
console.log(info[i].name)
console.log(info)
console.log(info.length)
var eats=$("<div>");
eats.attr("id", "restaurants")
var resName= info[i].name
var resPic= info[i].image_url
var resRating= info[i].rating
var resType = info[i].category[0]
console.log(resName)
$("#eats").append(eats)
$("#restaurants").append(resName)
$("#restaurants").append(resPic)
$("#restaurants").append(resRating)
$("#restaurants").append(resType)
}

});
});

var resType = info[i].category[0]出现问题,未定义,停止进一步执行。API响应没有密钥info[i].category,但它有一个密钥info[i].categories,它是一个数组,您可以使用info[i].categories[0]获取该数组的第一个元素。

您可以在try-catch语句中使用代码来避免这种情况。

try{
var resType = info[i].category[0];
}
catch(e) {
console.log(e);
console.log(info[i].categories[0]);
}

最新更新