0

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

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 中断并检查变量的值时,它返回为未定义。

4

2 回答 2

1

$.get是一个异步操作。所以实际发生的是您的loadServiceXml()方法返回undefined,因为它没有显式返回任何内容。您必须在传递给的函数内完成您打算做的工作$.get

function loadServiceXml(){
    $.get("/xml/ServiceUrls.xml", function(xml){
        // Process the response here
    });
}   
于 2013-04-24T05:58:25.927 回答
1

returnfrom 您的回调$.get不会返回值 out of 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.

于 2013-04-24T06:01:32.957 回答