[英]getJSON returning data
我查看了這里,我意識到它看起來不像 getJSON 返回任何東西,而是一個不可用的 object。 我遇到的問題是我正在嘗試編輯其他人的代碼以從 flickr 中提取圖片。 我正在嘗試制作一個 function ,它將返回圖片的描述。 我知道它不會返回信息,但是必須有一種方法來更新全局變量或以某種方式將我需要的信息傳遞給另一個變量以返回他的 function。 這是我到目前為止的主要內容。
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;
})
第一步是將結果分配給textInfo
變量:
$.getJSON(...) {
textInfo = String(data.photo.description._content);
$.getJSON() 調用是異步的,因此您的代碼return textInfo;
可能在 $.getJSON() 調用完成之前運行。 因此, textInfo
變量仍然是一個空字符串。 您將需要從 $.getJSON() 調用中調用其他代碼,或者延遲執行返回,直到異步調用完成。
此答案基於此處找到的類似答案。
編輯(根據您的問題更新) :
在$.getJSON()
的 scope 中包含 return 語句將不會成功。 您可以將結果分配給變量textInfo
,當 $.getJSON 完成時,該值將可用。
但是,您必須確保調用已完成,然后再嘗試訪問該值。 你可以使用setTimeout()
,這看起來很亂,或者你可以用 $.ajax() 代替你的 $.getJSON() 調用,這樣你就可以使用 'async = false' 選項。 這將強制調用在執行繼續之前完成,允許在返回之前填充變量。
照片不存在。。
console.log(data);
Output:
code: 1
message: "Photo "2121" not found (invalid ID)"
stat: "fail"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.