【问题标题】:How to avoid ISPOSTBACK in an asp.net jquery(ajax) application?如何在 asp.net jquery(ajax) 应用程序中避免 ISPOSTBACK?
【发布时间】:2020-05-22 11:18:57
【问题描述】:

我有一个使用 jquery/Ajax 的 ASP.NET WEB API 应用程序。当我在下拉列表中选择“M1”时,当我单击“更新”按钮时,gridview 会显示机器 1 的数据。如果更改为“M2”,gridview 将显示 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))
                };
            });
        }
    });
}

【问题讨论】:

    标签: asp.net ajax updatepanel postback


    【解决方案1】:

    好吧,我猜是,问题出在您的附加逻辑中,$('table').append(_data);。您继续将数据附加到表中,而不是清除以前的数据。只需在进入jQuery$.each api 之前尝试清除数据。如下所示:

    $.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

    【讨论】:

    • 这是一个网络表单。我使用 web api 通过 Intranet 进行通信。
    • 然后确保您没有使用服务器端按钮。并在您的 jquery 方法结束时返回 false。
    • 我使用了一个 html 输入(按钮)并在我的 jquery 中插入了“return false”,但没有任何改变。它像以前一样工作。
    • 好的,你试过我在回答中分享的示例代码吗?
    • 如果我在两个按钮更新之间在我的浏览器上推送“页面重新加载”,如果像需要的话。 1.选择M1 2.推送更新 3.推送重新加载页面。 4.选择M2 5.推送更新
    猜你喜欢
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2011-10-10
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多