0

Функция обновления divов - графиков: Удаляем все графики из контейнера, id параметра и его имя как обьект записывалем в массив, и для каждого создаем новый график.

Проблема в том, что значения переменным присваиваются правильно в каждой итерации, но все divы имеют id из последней итерации. Я не слышал о том, что ajax не работает в цикле, при этом у всех графиков разные данные.

Проверил в инструментах разработчика, видимо, сначала программа проходит весь цикл, а затем выполняет ajax-запрос, из-за этого id один у всех.

function refreshGraphs(s, e) {
    $('#graphsBlock').html('<div class="vertical" id="vertical">');
    var PointId;
    var PointName;
    for (var i = 0; i < selection.length; i++)
    {
        var dateS = dateStart.GetDate();
        var dateF = dateFinish.GetDate();
        PointId = selection[i].id;
        PointName = selection[i].name;
        var _dateS = dateS.format("yyyy-MM-dd-HH-mm-ss");
        var _dateF = dateF.format("yyyy-MM-dd-HH-mm-ss");
        var _focusID = PointId.substring(0, PointId.length - 1);
        alert(PointId + ' ' + PointName);

        (function (i) {
            $.ajax({
                type: 'GET',
                url: '/Monitoring/Monitoring/MonitorGraph',
                data: {
                    param: _focusID,
                    start: _dateS,
                    finish: _dateF,
                    id: PointId,
                    grName: PointName
                },
                cache: false,
                success: function (Serverdata) {
                    $("#graphsBlock").append('<div style="float: left; margin-left: 5%; width: 90%;" id="' + PointId + '">' + Serverdata + '</div>');
                }
            });
        })(i);
    }      
}</code></pre>
Maxkb24
  • 69
  • а зачем замыкать i, есть внутри коллбэка используются PointId и PointName? – Grundy Jul 21 '17 at 10:50
  • Это на данный момент последняя версия функции, добавил замыкание из топика на форуме, без него ситуация та же (использовал x = $.ajax ({...}); – Maxkb24 Jul 21 '17 at 10:54
  • Перечитай мой комментарий: а зачем замыкать i, если внутри коллбэка используются PointId и PointName? Обрати внимание на выделенные участки – Grundy Jul 21 '17 at 10:55
  • т.к. PointId и PointName зависят от i. они различны на каждой итерации – Maxkb24 Jul 21 '17 at 11:00
  • ок, покажи где ты внутри замыкания используешь i – Grundy Jul 21 '17 at 11:01
  • не использую, но немного от сути вопроса отошли, как тогда сделать, чтобы ajax-запрос выполнялся отдельно на каждой итерации? – Maxkb24 Jul 21 '17 at 11:11

0 Answers0