2016-11-26 1 views
2

Я ударил стену, пытаясь выяснить, как отправить запрос на BandsInTown API и сможет извлечь несколько элементов (дату и время и широту и долготу) с возвращенной страницы JSON, содержащей информацию о музыкальных событиях. Я довольно новичок в JavaScript и веб-разработке, поэтому любая помощь очень ценится! URL-адрес, который я использую в качестве запроса: http://api.bandsintown.com/artists/Hippo%20Campus/events.json?lapi_version=2.0&app_id=music_matcherКаков наилучший способ извлечения данных JSON из api url с использованием javascript и запроса GET?

, где я буду применять гибкость для изменения названного исполнителя.

Я не уверен, должен ли я добавить 'callback = что-то' param в URL-адрес или нет. Я просмотрел библиотеку запросов через Node.js, но я не совсем уверен, как заставить Node.js и npm работать через Eclipse Neon (используемая среда IDE), поэтому я действительно пытался просто сохранить это просто и найти чисто javascript решение, которое я мог бы реализовать непосредственно в моем скрипте в Eclipse. Я просто не совсем понимаю, как извлечь JSON и называть его позже в моем сценарии как results[0].venue.latitude (чтобы вернуть широту места проведения) или что бы объект «результаты» не был вызван (это также является частью моей проблемы). Нужно ли даже вставлять эту информацию в объект?

+0

Итак, вы ждете, чтобы иметь возможность анализировать возвращаемые данные, рассматривать его как объект JSON, а не большую строку? – Sane

+0

Да, я так думаю. Независимо от того, что позволит мне получить доступ к определенным значениям в документе JSON api url. Я не уверен, как импортировать его и сохранить отдельные значения. – crispEtomE

+0

Импорт и сохранение отдельных значений будет зависеть от того, как выкладывается ваш код и когда вы хотите получить доступ к возвращенным данным, но JSON.parse() может вам помочь. – Sane

ответ

0

Я закончил с использованием JSON.parse() в дополнении к запросу асинхронной HTTP, как это:

function httpGetAsync(theUrl, callback) { //theURL or a path to file 
var httpRequest = new XMLHttpRequest(); 
httpRequest.onreadystatechange = function() { 
    if (httpRequest.readyState == 4 && httpRequest.status == 200) { 
     var data = JSON.parse(httpRequest.responseText); 
     if (callback) { 
      callback(data); 
     }     
    } 
}; 

httpRequest.open('GET', theUrl, true); 
httpRequest.send(null); 
} 

и назвав его:

httpGetAsync(url, function(data) { 
document.write(data[0].venue.latitude); 
document.write(data[0].venue.longitude); 
document.write(data[0].datetime); 
}); 

Однако этот метод только позволяет мне делать один чистый вызов для api. Когда я пытаюсь сделать несколько вызовов, используя цикл, который вызывает функцию с разными URL-адресами, мой скрипт, кажется, заканчивается после первого. Так что это все еще проблема для моего применения этого.

Смежные вопросы