【问题标题】:Javascript beginner - global variable isnt workingJavascript初学者 - 全局变量不起作用
【发布时间】:2015-01-08 21:52:31
【问题描述】:

我想给出全局变量“title”的值(在函数 getInfo 中定义),但我在 alert(title) 处得到的只是“未定义”。当然我可以将警报放在最后一个函数中,但为什么我不能这样工作?

//[...]
var title;//global var

$(document).ready(
function(){                    
    $.getJSON(url, displayImages)//open func displayImages
});

function displayImages(data) {                                                                                                                                              
    $.each(data.photoset.photo, function(i,item){
            $.getJSON(url+item.id+"&format=json&jsoncallback=?", getInfo);//open func getInfo
            alert(title);//output: undefined

    });     

}

function getInfo(data2){
    title = data2.photo.title._content;//get value of title from json

}   

【问题讨论】:

  • 原因是alert(title)getInfo 之前被执行。为什么是因为getJSON 花费了一些时间来获取数据,但是在执行alert(title) 的同时,这就是原因。

标签: javascript json variables


【解决方案1】:

$.getJSON 是异步的,这意味着如果您在getInfo 方法中放置一个警报,它会在alert(title) 之后触发,即使它在它之前的一行。 p>

你可以这样解决这个问题:

$.getJSON(url+item.id+"&format=json&jsoncallback=?", function(data) { 
  getInfo(data);
  alert(title);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 2021-11-10
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多