Как я могу избавиться от ошибки, которую я получаю, когда мне нужны функции аудио текущей воспроизводимой дорожки в Spotify API? - PullRequest
0 голосов
/ 06 ноября 2018

Итак, у меня есть этот код, где я использую переменную, чтобы получить аудио функции текущей воспроизводимой песни. У меня уже есть код, но я получаю эту ошибку, говоря

Uncaught TypeError: Невозможно прочитать свойство 'id' из неопределенного *.

Кто-нибудь знает, что я делаю не так? Пожалуйста, объясните это как можно проще. Я новичок.

The error I see in my console

Вот код в виде текста:

setInterval(function(){
    callAjax();
}, 1000);

var apiData;
var audioData;

var callAjax = function(){

    $.ajax({
        url: 'https://api.spotify.com/v1/me/player/currently-playing',
        headers: {
          'Authorization': 'Bearer ' + access_token
        },
        success: function(response) {
          userCurrentlyPlaceholder.innerHTML = userCurrentlyTemplate(response);

          apiData = response;
          console.log(response);
          $('#login').hide();
          $('#loggedin').show();
        }
    });

    if (apiData = ! undefined){
        $.ajax({
            url: "https://api.spotify.com/v1/audio-features/" + apiData.item.id,
            headers: {
                'Authorization': 'Bearer ' + access_token
            },
            success: function(response) {
                userFeaturePlaceholder.innerHTML = userFeatureTemplate(response);

                audioData = response;
                console.log(response);
                $('#login').hide();
                $('#loggedin').show();
            }
        });
    }
}

1 Ответ

0 голосов
/ 07 ноября 2018

Кажется, что-то не так с неопределенной проверкой перед вашим вторым вызовом ajax. Вероятно, он должен читать apiData != undefined, но у вас есть apiData = ! undefined. Это фактически устанавливает apiData в !undefined, что соответствует истине. Если вы успешно получили apiData, эти данные будут потеряны, и любая последующая попытка получить доступ к чему-либо не удастся.

var apiData = {"item": {"id": 123}};
console.assert(apiData.item.id == 123);
console.assert(apiData != undefined);
apiData = ! undefined;
console.log(apiData);
console.assert(apiData.item.id == 123);

Вполне возможно, что первый ajax-вызов не удался из-за несанкционированного доступа, и apiData в любом случае не определен.

...