定义的变量返回undefined

时间:2013-04-24 05:54:11

标签: javascript jquery

我有以下代码但是当我运行代码时,它返回为undefined。我不知道为什么会这样!

function loadServiceXml(){
    $.get("/xml/ServiceUrls.xml", function(xml){
        return $.xml2json(xml);
    });
}

function getMajorGroups(){
    //get the base element to be created.
    var jsonXmlObject;
    jsonXmlObject = loadServiceXml();
    var element = $('.item-group-button').first();

}

响应返回xml文件没有任何问题,当我使用firebug中断并检查变量的值时,它返回为undefined。

2 个答案:

答案 0 :(得分:1)

$.get是一个异步操作。实际上,实际发生的是loadServiceXml()方法返回undefined,因为它没有显式返回任何内容。您必须在传递给$.get

的函数中执行您想要的工作
function loadServiceXml(){
    $.get("/xml/ServiceUrls.xml", function(xml){
        // Process the response here
    });
}   

答案 1 :(得分:1)

return回调中的$.get不会返回loadServiceXml之外的值。该功能永远不会返回任何东西!此外,您还有一个异步调用,您尝试将其视为同步调用。

相反,尝试将回调函数传递给loadServiceXml,以便在值返回后使用返回的值调用:

function loadServiceXml(callback){
    $.get("/xml/ServiceUrls.xml", function(xml){
        callback($.xml2json(xml));
    });
}

function getMajorGroups(){
    //get the base element to be created.
    loadServiceXml(function(jsonXmlObject) {
        var element = $('.item-group-button').first();
    }));
}

在这里,您将匿名函数传递给loadServiceXml,然后调用该函数,并在对象可用后将XML对象作为参数传递。因此,一旦您的调用完成,执行将跳回getMajorGroups中的匿名函数。