AJAX Запрос с циклом событий - PullRequest
0 голосов
/ 12 июля 2020

Я хочу создать функцию, которая запускает запрос AJAX с событием l oop. Он предназначен для того, чтобы взять эти 9 входов вверху и запустить событие от l oop до AJAX запросить их из базы данных. На данный момент у меня просто есть console.log, но в конечном итоге он сделает другие интересные вещи. Однако это не работает, и я получаю сообщение об ошибке «undefined», поэтому мне интересно, что мне не хватает?

var cards = [
  "Black Lotus",
  "Mox Pearl",
  "Mox Sapphire",
  "Mox Jet",
  "Mox Ruby",
  "Mox Emerald",
  "Time Walk",
  "Timetwister",
  "Ancestral Recall",
];

for (var i = 0; i < cards.length; i++) {
  function renderBinder() {
    var cardName = cards[i];

    var queryURL = "https://api.scryfall.com/cards/named?fuzzy=" + cardName;

    $.ajax({
      url: queryURL,

      method: "GET",
    }).then(function (response) {
      console.log(response.name);
    });
  }
}

1 Ответ

0 голосов
/ 12 июля 2020

Если вы хотите последовательно выполнять AJAX запросов с разными картами каждый раз, вы можете сделать что-то вроде этого. Функция getCardDetails принимает в качестве входных данных массив карточек. Он удаляет карту из списка и выполняет вызов AJAX, при успешном выполнении этого вызова мы снова вызываем ту же функцию, на этот раз во входном массиве не будет карты, для которой уже был сделан вызов.

var cards = [
  "Black Lotus",
  "Mox Pearl",
  "Mox Sapphire",
  "Mox Jet",
  "Mox Ruby",
  "Mox Emerald",
  "Time Walk",
  "Timetwister",
  "Ancestral Recall",
];

function getCardDetails (cards) {
    if (cards.length) {
        $.ajax({
            method: 'GET',
            url: "https://api.scryfall.com/cards/named?fuzzy=" + cards.pop()
        })
        .then((response) => {
            console.log(response);
            getCardDetails(cards);
        });
    }
}

getCardDetails(cards); // Logs the response of each request
...