У меня есть следующий 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, он всегда показывает «undefined».
На случай, если мне неясно:
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
Я бы очень, очень признателен за любую помощь в этом. Пожалуйста, объясните, потому что я действительно хотел бы понять, что происходит.