2013-11-02 4 views
0

Я использую Yummly API (https://developer.yummly.com/documentation), и я пытаюсь разобрать список курсов JSONP для использования в раскрывающемся списке. Формат файла, который я запрашиваю (находится по адресу http://api.yummly.com/v1/api/metadata/course?_app_id=[Мой идентификатор приложения) & _app_key = [Мой ключ приложения]):Uncaught ReferenceError: set_metadata не определен

set_metadata('course', [{"id":"course-Main Dishes","type":"course","description":"Main Dishes","searchValue":"course^course-Main Dishes"},....................}]) 

Запрос работает нормально, и я могу просмотреть результаты на вкладке Сеть в Chrome. Тем не менее, в консоли я получаю сообщение об ошибке «Uncaught ReferenceError: set_metadata не определено». Я много оборачивался и обнаружил людей с похожими, но разными ошибками, но я не понял причины и почему исправления для их ошибки работают. Я довольно новыми для JQuery, поэтому я предполагаю, что я делаю что-то не так с моей просьбой, которая:

var coursesURL = 'http://api.yummly.com/v1/api/metadata/course?_app_id=' + appID + '&_app_key=' + appKey; 
var courses = []; 

//Query for the list 
$.getJSON(coursesURL + '?callback=?', null, function(data) { 
    console.log(data); 
    //Go through each result object found 
    $.each(data.course, function(i, course) { 
     courses.push(course.description); 
    }); 
    console.log(courses); 
}); 

Любая помощь очень ценится. Я также очень благодарен за объяснение того, что мне не хватает, а не только по поводу исправления. Спасибо.

+0

попробовать '$ .ajax ({ URL: coursesURL, DATATYPE: 'JSONP', успех: функция (данные) {// } })' – shakib

ответ

0

Я понял, что проблема.

JSONP возвращает не текст JSON, а функцию обратного вызова. Таким образом, мне нужна функция в моем коде под названием «set_metadata», который используется при успешном вызове json/ajax.

В частности, я определил функцию

function set_metadata(course, data) { 
    //Do stuff here 
}; 

Я проверил это и правильно фиксирует данные, которые я пытаюсь получить.

1

Причины, по которым я добавляю это как ответ, а не комментарий, потому что у меня недостаточно репутации для комментариев, и это единственное, что я могу найти на yummly api, возвращающем jsonp.

Я смог преодолеть проблему «uncaught referenceError», но теперь ее единственное возвращение слова «аллергия», которое находится в ответе, и я не получаю остальную часть данных.

вот мой код:

$.ajax({ 
     url:"//api.yummly.com/v1/api/metadata/allergy?_app_id=[APP_ID]&_app_key=[APP_KEY]?callback=", 
     dataType:"jsonp", 
     jsonpCallback:"set_metadata", 
     beforeSend:function(){ 
      console.log("sending"); 
     }, 
     success: function (data){ 
      console.log(data); 
     }, 
     error: function(data){ 
      console.log("send error and returned:"); 
      console.log(data); 
     } 
    }); 

вот ответ:

set_metadata('allergy', [ 

    {"id":"392","shortDescription":"Wheat-Free","longDescription":"Wheat-Free","searchValue":"392^Wheat-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"393","shortDescription":"Gluten-Free","longDescription":"Gluten-Free","searchValue":"393^Gluten-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"394","shortDescription":"Peanut-Free","longDescription":"Peanut-Free","searchValue":"394^Peanut-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"395","shortDescription":"Tree Nut-Free","longDescription":"Tree Nut-Free","searchValue":"395^Tree Nut-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"396","shortDescription":"Dairy-Free","longDescription":"Dairy-Free","searchValue":"396^Dairy-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"397","shortDescription":"Egg-Free","longDescription":"Egg-Free","searchValue":"397^Egg-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"398","shortDescription":"Seafood-Free","longDescription":"Seafood-Free","searchValue":"398^Seafood-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"399","shortDescription":"Sesame-Free","longDescription":"Sesame-Free","searchValue":"399^Sesame-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"400","shortDescription":"Soy-Free","longDescription":"Soy-Free","searchValue":"400^Soy-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]}, 

    {"id":"401","shortDescription":"Sulfite-Free","longDescription":"Sulfite-Free","searchValue":"401^Sulfite-Free","type":"allergy","localesAvailableIn":["en-US","en-GB"]} 

]); 

строка кода, который говорит:

jsonpCallback:"set_metadata", 

в вызове Ajax получает меня мимо ошибка ссылки, но я не получаю остальную часть данных, которые находятся в ответе.

, пожалуйста, помогите? Finbar

+0

Вы должны спросить это, как это собственный вопрос (и ссылку на этот вопрос, если хотите). Таким образом, вы можете начать создавать репутацию. Как только вы сделаете это, отредактируйте свой пост со ссылкой на вопрос, и я попробую помочь вам там! –

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