#javascript
#javascript
Вопрос:
let upc = barcode;
let appKey = (insert appKey)
let appId = (insert appId)
$(document).ready(function(){
$.ajax({
url: "https://trackapi.nutritionix.com/v2/search/item?x-app-id=" appId "amp;x-app-key=" appKey "amp;upc=" upc,
dataType: "json",
complete: function(data) {
var foodData = data.responseJSON.foods[0];
Мы пытаемся использовать этот API для проекта, но каждый раз, когда мы пытаемся его запустить, JavaScript сообщает, что он «не может прочитать свойство ‘0’ из undefined». У нас не закончились вызовы, потому что мы получили совершенно новый идентификатор и ключ. Он по-прежнему не работает и выдает нам ту же ошибку.
Комментарии:
1. Вам придется использовать инструменты разработчика браузера, чтобы проверить, что на самом деле возвращается из HTTP-запроса.
2. Не могли бы вы сделать
console.log(data.responseJSON)
? скорее всего, у него нетfoods
свойства.3. Когда я перехожу по ссылке в браузере, он говорит, что обращение не найдено. Это происходит с каждой новой ссылкой, которую мы получаем. Мы проверили, не отключены ли серверы API, но это не так. Это означает, что мы, должно быть, что-то напутали в коде.
4. Это очень специфично для API, который вы вызываете. Возможно, вам следует ссылаться на их поддержку, а не на SO. Как сказал @DipenShah, вы
data.responseJSON.foods
undefined
. Так что либо вы используете его неправильно, либо вам следует проверить их документацию, и если полученный результат не совпадает, обратитесь в их службу поддержки, чтобы понять, почему.5. Мы нашли проблему. Это было связано с тем, что мы использовали 2 API. Один из них — UPC API, а другой — API базы данных продуктов питания. Проблема в том, что UPC API содержит намного больше элементов, чем API базы данных продуктов. И когда мы вводим что-то, чего нет в food API, оно возвращается как неопределенное.