我正在尝试运行此:
function loadApp() {
var content = getContent("content.xml");
createMap(content);
}
function getContent(file) {
$.ajax({
type: "GET",
url: file,
dataType: "xml",
success: parseXml
});
function parseXml(xml) {
var content = [];
$("element", xml).each(function () {
var var1 = $(this).children("var1").text(),
content.push(var1)
});
return content;
}
}
function createMap(content) {
alert(content);
}
但是,当我打开页面时,警报提示我的
content
变量未定义。当我从getContent()
删除content
时,createMap(content);
可以正常工作并为loadApp()
提供一个字符串值。似乎createMap()
在getContent()
之前运行,这就是为什么尚未定义变量的原因,为什么会发生这种情况以及如何解决呢?提前致谢。
最佳答案
我假设getContent()
进行异步AJAX调用。如果是这样,在接收到响应之前将调用createMap()
函数。
如果是这种情况,我将修改getContent()
函数,以便您可以将createMap()
函数传递给它,并在正确的时间调用它。
function loadApp() {
getContent( "content.xml", createMap );
}
function getContent( file, fn ) {
$.ajax({
type: "GET",
url: file,
dataType: "xml",
success: parseXml
});
function parseXml(xml) {
var content = [];
$("element", xml).each(function () {
var var1 = $(this).children("var1").text(),
content.push(var1)
});
// Call "fn" instead of returning "content"
fn( content );
}
}