#jquery #json #api
#jquery #json #API
Вопрос:
Я хотел бы создать простой веб-инструмент для запроса данных Enviroment Agency (EA) через их API. Их инструкции здесь: http://environment.data.gov.uk/flood-monitoring/doc/reference
Я хотел бы использовать jquery, если это возможно.
Мой вопрос: предоставляет ли приведенная выше ссылка достаточно информации для выполнения моей задачи? Причина, по которой я спрашиваю, заключается в том, что я изо всех сил пытаюсь приступить к выполнению этой задачи.
Я бы ожидал написать что-то вроде следующего, чтобы подсчитать количество записей, например:
$.ajax({
url: 'http://environment.data.gov.uk/flood-monitoring', //not sure if this link is correct
type: 'GET',
success: function(data){
alert(data.length ' package(s) found')
},
error: function() {
alert('Failed to get the list of packages.')
},
dataType: 'jsonp',
jsonpCallback: 'jsonpcallback'
});
Ссылка выше, похоже, не содержит таких инструкций.
Я отправил электронное письмо советнику, чтобы запросить пример кода, но, похоже, у них его нет.
Мы будем признательны за любые отзывы о том, отсутствуют ли в приведенной выше ссылке важные инструкции для ссылки на их API. Если ответ «да», то я знаю, что нужно продолжать запрашивать у советника дополнительные инструкции. В противном случае больше чтения для меня!
Заранее спасибо
Комментарии:
1. посмотрите на environment.data.gov.uk/flood-monitoring/doc/… где они используют URL-адрес environment.data.gov.uk/flood-monitoring/id/floods
2. Не используйте jsonp, сервер его не обрабатывает. Смотрите пример использования jQuery: jsfiddle.net/52jk5o8n/1
Ответ №1:
Данные ответа представляют собой объект, а не массив. Итак, data.length
не работает. Попробуйте Object.keys(data)
, и вы увидите, что у вас есть данные.
$.ajax({
url: 'http://environment.data.gov.uk/flood-monitoring/data/readings?latest',
type: 'GET',
success: function(data){
var keys = Object.keys(data);
var size = keys.length;
console.log('number of keys: ' size);
if (size) {
keys.map(function(key, i){
console.log('key: ' key);
if (key == '@context') {
console.log(' ' data[key]);
}
else if (key == 'meta') {
console.log(' ' JSON.stringify(data[key]));
}
else if (key == 'items') {
console.log('data[items][0]:');
console.log(' ' JSON.stringify(data[key][0]));
}
});
}
},
error: function() {
console.error('Failed to get the list of packages.')
}
});