Как получить 1-е поле ответа AJAX, когда имя меняется в зависимости от URL? - PullRequest
1 голос
/ 07 апреля 2020

Я звоню AJAX в открытую библиотеку книг. Когда я выполняю вызов, данные возвращаются следующим образом:

{"ISBN:0261102303": {"bib_key": "ISBN:0261102303", "preview": "noview",
"thumbnail_url": "https://covers.openlibrary.org/b/id/8447430-S.jpg",
"preview_url": "https://openlibrary.org/books/OL26793280M/Lord_of_the_Rings",
"info_url": "https://openlibrary.org/books/OL26793280M/Lord_of_the_Rings"}}

Вызов ajax выглядит следующим образом:

var isbn = $(list).attr('isbn');
    if(isbn == "null"){
        document.getElementById("cover").style.visibility = "visible";  
    }
    else{
        var coverUrl =  "ISBN:" + isbn;
        a=$.ajax({
                    url: "https://openlibrary.org/api/books?bibkeys=ISBN:" + isbn + "&format=json",
                    method: "GET"
            }).done(function(data) {
                try{
                     //data.?????
                }
                catch(err){
                      alert("err");
                }
            }).fail(function(error) {
                    $("#listResults").append("An error occurred while loading cover");
            });
    }

Проблема в том, что объект, который является возвращаемое имя не является stati c, но зависит от переменной "isbn", которая вводится для ссылки. Поскольку я не могу выполнить «data.ISBN: 0261102303.thumbnail_url», поскольку за ISBN: могут следовать любые случайные числа, как мне получить доступ к thumbnail_url для всех возможных вызовов AJAX?

1 Ответ

1 голос
/ 07 апреля 2020

Вы можете получить доступ к свойству thumbnail_url, используя переменную isbn, которую вы передаете вызову ajax, например:

const url = data[`ISBN:${isbn}`].thumbnail_url;
console.log( url )

Если вам нужен полный объект ISBN:*, то вы можно сделать:

const obj = data[`ISBN:${isbn}`];
console.log( obj )

DEMO (используя fetch()):

(async() => {
  const isbn = '0261102303';
  let response = await fetch("https://openlibrary.org/api/books?bibkeys=ISBN:" + isbn + "&format=json");
  let data = await response.json();
  
  const obj = data[`ISBN:${isbn}`];
  console.log(obj)
  console.log(obj.thumbnail_url)
})();
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...