我有以下js。问题是,我无法访问getMajorGroups函数中的变量jasonServiceUrlObject。我已经全局声明了变量,但是当警报运行时,firebug会抛出一个未定义的错误!
var jsonServiceUrlObject = null;
function loadServiceXml(){
$.get("/xml/ServiceUrls.xml", function(xml){
jsonServiceUrlObject = $.xml2json(xml);
});
}
function getMajorGroups(){
var element = $(".item-group-button").first();
var serviceUrl = getServiceURL("getAllMajorGroups")
alert(jsonServiceUrlObject.service[1].service_key);
$.get(serviceUrl , function(data){
if(data.majorGroups.length != 0){
$('.panel_list').empty();
element.empty();
}
for(var i = 0; i < data.majorGroups.length; i++){
var clone = element.clone();
clone.append("<h3>" + data.majorGroups[i].description + "</h3>");
clone.attr("id", data.majorGroups[i].majorGroupId);
$('.panel_list').append(clone);
}
});
}
答案 0 :(得分:1)
在运行所有其他功能之后,您的AJAX回调需要一些时间才能返回。因此,当函数使用它时,不会设置变量。尝试将async
设置为false
。然后你的代码将一直等到AJAX调用返回。或者您可以在AJAX回调中调用使用该变量的函数。
答案 1 :(得分:0)
您必须在引用变量之前设置变量,只是声明它是不够的。您没有显示所有代码,但我猜这不会发生。
请注意,在第二个函数之前运行第一个函数是不够的,因为变量是在回调中定义的。如果你想连续运行这些函数,你应该在第一个函数的回调中调用第二个函数。
function loadServiceXml(){
$.get("/xml/ServiceUrls.xml", function(xml){
jsonServiceUrlObject = $.xml2json(xml);
getMajorGroups();
});
}