Для L oop разрывы между и возвращение только одного значения - PullRequest
0 голосов
/ 24 марта 2020

Следующий вызов API возвращает ожидаемые данные для 5 ресторанов, но для l oop для отображения информации возвращается только информация [0] и затем останавливается. Я попытался удалить protectDefault, но, похоже, это не имеет значения. Нет ошибок в консоли. Любые идеи?

 $(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)

      }



    });

  });

1 Ответ

0 голосов
/ 24 марта 2020

Строка var resType = info[i].category[0] создала проблему, она не определена, и она останавливает дальнейшее выполнение. Ваш ответ API не имеет ключа info[i].category, но имеет ключ info[i].categories и его массив, и вы можете взять 1-й элемент этого массива, используя info[i].categories[0].

. Вы можете использовать код внутри try операторы catch, чтобы избежать подобных ситуаций.

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