我有以下代码但是当我运行代码时,它返回为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。
答案 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
中的匿名函数。