@SvetlanaDubovik

Не парсятся данные. Почему?

Здравствуйте. Подскажите, пожалуйста, есть следующая функция
function showPredecessor(urlValue) {
            var predecessor = [];
    predecessor = (collectData(urlValue, 'СвПредш')); (1)
}

Предполагается, что данная функция из urlValue получает данные , формирует из них DOM-элементы и выводит на экран. Таких аналогичных функций у меня порядка 5 штук. Я хотела написать функцию, которая будет парсить JSON файл. Ниже она представлена
function collectData(urlv, field) {
    $.getJSON(urlv, function (data) {
        var arr = [];
        if (data.response[field] != null) {
            for(var i =0; i < data.response[field].length; i++)
                arr.push(getData(data.response[field]));
        }
        return arr;
    });
}

Когда я вызываю showPredecessor(url),она в строчке (1) заходит в collectData, но все, что выполняется в $.getJSON(urlv, function (data) { }); отладчик игнорит. Просто перескакивает и не выполняет. С чем может быть связано такое поведение?? Или в принципе невозможно вынести выполнение аякс запросов в в отдельную функцию??

P.S. Обнаружила, что она запускается, но только после того, как встретит ошибку в функции showPredecessor(). Получается, что я не могу вызвать аякс запрос, когда мне надо??
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 1
alfaslash
@alfaslash
frontend-developer
Функция
$.getJSON()
является асинхронной, именно поэтому отладчик "перескакивает" на код дальше. Callback для getJSON вызывается позже, когда уже пришел ответ от сервера. Попробуйте поставить breakpoint на строку
var arr = [];
или ниже.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы