【发布时间】:2009-04-04 21:07:32
【问题描述】:
我有以下 JavaScript(我正在使用 jQuery):
function language(language)
{
var text = new Object();
$.ajax({
type: "GET",
url: "includes/xml/languages/" + language + ".xml",
dataType: "xml",
success: function(xml){
$(xml).find('text').each(function(){
text[$(this).attr('id')] = $(this).text();
});
}
});
return true;
}
我有一个 XML 文件,然后该类正在读取该文件。 XML 文件有这样的声明:
<text id="must_be_string">Must be a string.</text>
<text id="must_be_number">Must be a number.</text>
<text id="must_be_integer">Must be an integer.</text>
XML 文件被正确读取,但我遇到的问题是 text 变量似乎无法正常工作。
通过设置一些警报停止点来尝试调试,我发现这是正在发生的事情:
在success: function(xml){ 内部,可以正确访问变量text。但是,该函数内部为文本分配新短语的分配并没有正确添加它。在success: 中,我可以通过alert(text['must_be_string']) 得到“必须是字符串”,但是当我离开Ajax 调用时,它总是显示“未定义”。
如果我不清楚:
var text = new Object();
$.ajax({
type: "GET",
url: "includes/xml/languages/" + language + ".xml",
dataType: "xml",
success: function(xml){
alert(text); // Shows [object Object]
$(xml).find('text').each(function(){
text[$(this).attr('id')] = $(this).text();
});
alert(text['must_be_string']); // Shows "Must be a string."
}
});
alert(text['must_be_string']); // Shows undefined -- this is my problem
我真的非常感谢任何帮助。请解释一下,因为我真的很想了解发生了什么。
【问题讨论】:
标签: javascript jquery scope