getJSON, возвращающий данные - PullRequest
0 голосов
/ 12 июля 2011

Я просмотрел здесь и понял, что не похоже, что getJSON возвращает ничего, кроме непригодного для использования объекта.Проблема в том, что я пытаюсь отредактировать чужой код, чтобы вытащить картинку из flickr.Я пытаюсь сделать функцию, которая будет возвращать описание фотографий.Я знаю, что он не возвращает информацию, однако должен быть способ обновить глобальную переменную или каким-то образом передать нужную мне информацию в другую переменную, чтобы вернуться к его функции.Это часть того, что у меня есть.

  function add_description(n){

    var img_id = String(n);


    var textInfo ="";
$.getJSON('http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=36c8b00c47e8934ff302dcad7775d0a2&photo_id='+img_id+'&format=json&jsoncallback=?', function(data ){


                 textInfo = String(data.photo.description._content);
                alert(textInfo);
                return textInfo;           

            })


}

Это код, который я пробовал после ваших обновлений, Джордж.Спасибо!

 var testObj=$.getJSON('http://api.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=36c8b00c47e8934ff302dcad7775d0a2&photo_id='+img_id+'&format=json&jsoncallback=?', function(data ){



                 textInfo = String(data.photo.description._content);
                alert(textInfo);
                return textInfo;



            })

Ответы [ 2 ]

1 голос
/ 12 июля 2011

Первый шаг - присвоить результаты переменной textInfo:

$.getJSON(...) {
    textInfo = String(data.photo.description._content);

Вызов $ .getJSON () является асинхронным, поэтому ваш код return textInfo;, вероятно, выполняется до завершения вызова $ .getJSON (). Следовательно, переменная textInfo по-прежнему является пустой строкой. Вам нужно будет вызвать другой код из вызова $ .getJSON () или отложить выполнение возврата до завершения асинхронного вызова.

Этот ответ основан на аналогичном ответе, найденном здесь .

РЕДАКТИРОВАТЬ (на основе обновления вашего вопроса) :

Вы не добьетесь успеха, включая оператор возврата в пределах $.getJSON(). Вы можете присвоить результат переменной textInfo, как вы это сделали, и это значение будет доступно после завершения $ .getJSON.

Однако вы должны убедиться, что вызов завершен, прежде чем пытаться получить доступ к значению. Вы можете использовать setTimeout(), что выглядит грязно, или вы можете заменить $ .ajax () на ваш вызов $ .getJSON (), чтобы вы могли использовать опцию «async = false». Это заставит вызов завершиться до продолжения выполнения, что позволит заполнить переменную перед ее возвратом.

0 голосов
/ 12 июля 2011

Фото не существует ..

console.log(data);

Выход:

code: 1
message: "Photo "2121" not found (invalid ID)"
stat: "fail"
...