我有以下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文件的声明如下:
Must be a string. Must be a number. Must be an integer.
XML文件正在被正确读取,但我遇到的问题是text
变量似乎没有正常工作.
从设置一些警报停止点到尝试调试,我发现这就是发生的事情:
在里面success: function(xml){
,text
可以正确访问var .但是,在该函数中为文本分配新短语的分配不会正确添加.在里面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
我真的非常感谢你对此的任何帮助.请解释一下,因为我真的很想了解发生了什么.
ajax调用的成功方法是异步调用.当你调用$.ajax
方法时,会立即返回并尝试执行alert(text['must_be_string']);
,直到ajax调用成功之后才会设置,将来某些点.
希望这可以帮助.