Javascript 未定义变量的问题
我正在尝试运行以下命令:Javascript 未定义变量的问题,javascript,jquery,function,variables,Javascript,Jquery,Function,Variables,我正在尝试运行以下命令: function loadApp() { var content = getContent("content.xml"); createMap(content); } function getContent(file) { $.ajax({ type: "GET", url: file, dataType: "xml", success: parseXml });
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);
}
但当我打开页面时,警报会显示我的内容变量未定义getContent()
工作正常,当我删除createMap(content)时,会给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 );
}
}
也许您应该向我们展示getContent()方法。也许它有一个回调。我想你的getContent
函数做了一个异步操作(比如Ajax请求)…谢谢你的工作!但是有没有其他方法可以让我的函数仅在第一个函数完成并返回值时运行?@VerizonW:唯一的方法是将ajax请求设置为async:false
,这通常是个坏主意。最终,您的getContent
函数将在AJAX请求返回之前退出很久。因此,任何依赖于AJAX响应的代码都必须等到收到响应后才能运行。如果createMap
位于getContent
可访问的范围内,则无需传递函数,只需在parseXML
中直接调用即可。但是在loadApp()
中调用它是行不通的。