nvbach91 / 4IZ268-2019-2020-ZS

A repository for laboratories of subject 4IZ268, Fall Semester 2019/2020.
MIT License
0 stars 6 forks source link

openlibrary API #82

Open tpla00 opened 4 years ago

tpla00 commented 4 years ago

Dobrý den,

měla bych dotaz ohledně seminární práce.

Vybrala jsem si tuto API (openlibrary.org), ale nedaří se mi ji propojit. Chtěla bych se zeptat, jestli je chyba v níže uvedeném kódu nebo to může být někde jinde?

$.get(`http://openlibrary.org/search.json?q=wtf`).done((resp) => {
        var jsonResp = $.parseJSON(resp);
        console.log(jsonResp.docs);

Přikládám i chybovou hlášku:

VM63:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
    at Function.parse [as parseJSON] (<anonymous>)

Děkuji, přeji hezký den

nvbach91 commented 4 years ago

Odpověď z této API je automaticky převedena do JSONu, takže ten druhý řádek máte navíc.

tpla00 commented 4 years ago

Dobrý den,

včera jsem udělala celou seminární práci a fungovalo to. Dnes jsem nic nezměnila a hlásí mi to najednou chybovou hlášku. Vůbec nevím, čím by to mohlo najednou být.

Uncaught TypeError: Cannot read property 'length' of undefined

 $.get(`http://openlibrary.org/search.json?title=${bookName}/`).done((resp) => {

                // vytvořit picker
                const picker = $('<ul>');

                for (let i = 0; i < resp.docs.length; i++) {

                    // vytvořit i-tou knížku k vybrání
                    const item = $('<li>');

                    const book = resp.docs[i];

                    item.text(book.title)

                    const button = $('<button>');
                    button.text('Add');
                    button.click(() => {
                        App.createBook(book.title + ', ' + book.author_name + ', ' + book.isbn)
                        picker.remove()
                        App.bookList.appendTo('body')
                    });
                    button.appendTo(item);

                    item.appendTo(picker)

                    picker.appendTo('body');
                }
            })

Předem děkuji

nvbach91 commented 4 years ago

Objekt resp v tomhle pripade nemusi mit vlastnost docs, podle toho, co se vam vrati z API. Muzete si zkontrolovat pomoci debuggeru, nebo console.log.

Kazdopadne musite vyresit oba pripady, tj, kdyz se vrati uspesna odpoved, nebo neuspesna odpoved