Как избежать ISPOSTBACK в приложении asp. net jquery (ajax)? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть ASP. NET приложение WEB API, использующее jquery / Ajax. Когда я выбираю «M1» в раскрывающемся списке, в виде сетки отображаются данные для машины 1, когда я нажимаю кнопку «Обновить». Если изменить на «M2», в виде сетки отображаются данные для M1 И M2. Продолжайте добавлять данные. Я хочу видеть только данные для M1 или M2 и так далее. Проблема, вероятно, связана с функцией POSTBACK. Как это решить? Обновить панель?

function update() {
    $.ajax({
        type: 'GET',
        url: '/api/stop/',
        dataType: "JSON",
        data: "data",
        success: function (data) { 
            $.each(data, function (i, data) {
                if (data.machinename == $("#DropDownList11").val() && data.name != $(null).val() && data.overlimit == 1 && data.stopcause ==$(null).val())
                {
                        var _id = data.id;
                        var _machinename = data.machinename;
                        var _stopcause = data.stopcause;
                        var _machinename = data.machinename;
                        var _name = data.name;
                        var _stop1 = data.idlestart;
                        var _stop2 = data.idlestop;
                        var _data = '<tr><td>' + _id + ' </td><td>' + _machinename + '</td><td>' + _name + '</td><td>' + _stop1 + '</td><td>' + _stop2 + '</td><td>';
                        var _data2 = '<option>' + data.id + '</option>'
                        $('table').append(_data);
                        $('#DropDownList5').append($(_data2))
                };
            });
        }
    });
}

1 Ответ

0 голосов
/ 06 февраля 2020

Ну, я думаю, проблема в логике вашего приложения c, $('table').append(_data);. Вы продолжаете добавлять свои данные в таблицу, а не очищать предыдущие. Просто попробуйте очистить данные, прежде чем перейти в $.each API jQuery. Примерно так:

$.ajax({
    type: 'GET',
    url: '/api/stop/',
    dataType: "JSON",
    data: "data",
    success: function (data) {
        $("table tr").remove(); // this line will clear off the previous table tr elements before appending new ones.
        $.each(data, function (i, data) {
            if (data.machinename == $("#DropDownList11").val() && data.name != $(null).val() && data.overlimit == 1 && data.stopcause ==$(null).val())
            {
                    var _id = data.id;
                    var _machinename = data.machinename;
                    var _stopcause = data.stopcause;
                    var _machinename = data.machinename;
                    var _name = data.name;
                    var _stop1 = data.idlestart;
                    var _stop2 = data.idlestop;
                    var _data = '<tr><td>' + _id + ' </td><td>' + _machinename + '</td><td>' + _name + '</td><td>' + _stop1 + '</td><td>' + _stop2 + '</td><td>';
                    var _data2 = '<option>' + data.id + '</option>'
                    $('table').append(_data);
                    $('#DropDownList5').append($(_data2))
            };
        });
    }
});

Более того, я не уверен, где находится функция POSTBACK, о которой вы упоминаете, насколько я знаю, функции POSTBACK являются частью WebForms, а не WebAPI. Итак, я предполагаю, что методом POSTBACK вы имели в виду метод success.

...