var field1;
var field2;
function setUserFields() {
$.ajax({
type: "POST",
url: "url",
dataType: "xml",
complete: parseXml
});
}
function parseXml {
$(xml.responseXML).find("myValue").each(function()
{
field1 = $(this).attr('attr1');
field2 = $(this).attr('attr2');
alert(field1 + ' ' field2); //shows correct values
});
}
setUserFields();
$(function() {
alert(field1); //undefined in IE and Chrome | Gives correct value in FireFox
alert(field2); //undefined in IE and Chrome | Gives correct value in FireFox
})
Я не публикую точный код, который я запускаю, так как код довольно сложный.Если в размещенном коде есть синтаксические ошибки, не обращайте внимания, поскольку это не является причиной моей проблемы.Код работает как и ожидалось в Firefox, но не в IE или Chrome.Кроме того, я могу проверить в Firebug lite, что порядок выполнения кода не должен вызывать проблем.Я пытаюсь вызвать веб-сервис, проанализировать результаты и сохранить необходимую информацию в глобальной переменной для использования в последующих функциях, которые я могу вызвать только после завершения загрузки DOM.Я запускаю функцию setUserFields до загрузки документа.Функция вызывается и устанавливает переменные, но переменные доступны только в области действия parseXML ().Поскольку я объявил переменные вне области действия всех функций и устанавливаю переменные внутри функции parseXML, я ожидал, что переменные будут установлены глобально.Однако, только в Firefox я могу получить доступ к переменным без их определения.Я довольно новичок на арене javascript, поэтому я могу упустить очевидную ловушку.Я несколько часов пытался погуглить, но безуспешно.Любая помощь будет принята с благодарностью.