Я новичок в использовании apis и различных методов для получения данных. Я следовал нескольким учебникам, включая этот метод извлечения on или метод XMLHttpRequest для получения данных, и могу сделать это только с помощью API, используемого в учебниках. Я надеюсь использовать этот API , но у меня возникли проблемы, я думаю, только с формой URL. Я получаю эту ошибку:
«Доступ к выборке по номеру http://collections.anmm.gov.au/collections' от
origin 'http://localhost:8888' заблокирован политикой CORS: Нет
«Access-Control-Allow-Origin» «
Я пытался использовать https, чтобы избежать ошибки CORS, но затем получил эту ошибку:
Net :: ERR_CONNECTION_REFUSED.
Я могу вернуть json, если пропущу этот URL прямо в браузере: http://collections.anmm.gov.au/collections/json.
Я хотел бы знать, есть ли у меня проблема с URL-адресом, который я пытаюсь использовать, или, возможно, есть проблема с самим API, которая мешает мне получить доступ к данным.
Заранее спасибо за любые указатели.
Это мой код JavaScript:
function createNode(element){
return document.createElement(element);
}
function addClass(cls, el){
return el.classList.add("cls");
}
function append(parent, el){
return parent.appendChild(el);
}
const div = document.getElementById('root');
div.setAttribute('class', 'container');
//const url = 'https://randomuser.me/api/?results=100';
//can return data from this url
const url ='http://collections.anmm.gov.au/collections' // returns data if pasted directly into the browser
//const url = 'http://collections.anmm.gov.au/collections/json' // this is the format suggested in the api documentation I think
fetch(url)
.then((resp)=> resp.json())
.then(function(data){
//create and append the list to the ul
let authors = data.results; // get results
return collections.map(function(collection){
let card = createNode('div'),
// img = createNode('img'),
h1 = createNode('h1');
card.setAttribute('class', 'card');
img.src = collection.notes.value;
h1.innerHTML = `${collection.notes.value} ${collection.notes.value}`;
append(card, h1);
append(div, card);
})
})
.catch(function(error){
console.log(error)
});