【问题标题】:getJSON returning datagetJSON 返回数据
【发布时间】:2011-10-03 22:02:43
【问题描述】:

我已经浏览过这里,我意识到 getJSON 看起来除了返回一个不可用的对象之外没有任何东西。我遇到的问题是我正在尝试编辑其他人的代码以从 flickr 中提取图片。我正在尝试制作一个返回图片描述的函数。我知道它不会返回信息,但是必须有一种方法来更新全局变量或以某种方式将我需要的信息传递给另一个变量以返回他的函数。这是我目前所拥有的 jist。

  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;           

            })


}

这是我在您更新 George 后尝试的代码。谢谢!

 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;



            })

【问题讨论】:

    标签: javascript json flickr getjson


    【解决方案1】:

    第一步是将结果赋值给textInfo变量:

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

    $.getJSON() 调用是异步的,因此您的代码 return textInfo; 可能在 $.getJSON() 调用完成之前运行。因此,textInfo 变量仍然是一个空字符串。您将需要在 $.getJSON() 调用中调用其他代码,或者延迟执行返回,直到异步调用完成。

    此答案基于similar answer found here

    编辑(根据您的问题更新)

    $.getJSON() 范围内包含return 语句将不会成功。您可以将结果分配给变量textInfo,当 $.getJSON 完成时,该值将可用。

    但是,在尝试访问该值之前,您必须确保调用已完成。你可以使用setTimeout(),这看起来很乱,或者你可以用$.ajax() 代替你的$.getJSON() 调用,这样你就可以使用'async = false' 选项。这将强制调用在继续执行之前完成,允许在返回之前填充变量。

    【讨论】:

    • 那是因为链接动态地接受 img-id。我知道它正确地提取了信息。我已经对其进行了调试,并看到它得到了我要求的描述。
    • 乔治,我认为这可能是个问题。我尝试了许多不同的方法,比如一个实例,我在调用 JSON 中返回,而我从 JSON 中得到的只是“null”而不是空白,如果它没有正确设置变量,我会得到。
    • .getJSON 调用中的返回将仅返回该范围,而不是从父范围('add_description')返回。您能否发布您使用的与我描述的代码相似的代码,以便我们确定是什么导致 textInfo 的值为空?
    【解决方案2】:

    照片不存在..

    console.log(data);
    

    输出:

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

    【讨论】:

    • 阅读我为乔治留下的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多