gpt4 book ai didi

javascript - 变量范围的问题 (JavaScript)

转载 作者:行者123 更新时间:2023-11-30 07:48:30 24 4
gpt4 key购买 nike

我有以下 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){ 中,可以正确访问 var text。但是,该函数中用于为文本分配新短语的分配并没有正确添加它。在 success: 中,我可以 alert(text['must_be_string']) 并得到“Must be a 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

我真的非常感谢这方面的任何帮助。请解释一下,因为我真的很想了解发生了什么。

最佳答案

ajax调用的success方法是异步调用。当您调用 $.ajax 时,该方法将立即返回并尝试执行 alert(text['must_be_string']);,直到ajax 调用成功,在未来的某个时刻。

希望这对您有所帮助。

关于javascript - 变量范围的问题 (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/717823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com