【问题标题】:Ajax-call refreshes pageAjax 调用刷新页面
【发布时间】:2015-11-22 13:25:19
【问题描述】:

我在 gridview 中有一个元素列表,我需要使用 web 方法删除它们,更新 gridview 并且不要重新加载整个页面。但每次调用后页面都会重新加载。

我的按钮:

<asp:Button ID="btnDelete" runat="server"  CssClass="btn btn-default" Text="Delete a row" OnClientClick="DeleteRecord() return false;" />

它的 JS 脚本:

function DeleteRecord() {
    var inputData = jsTextBox();
    if (confirm('Are you certain you want to delete this record?')) {
        $.ajax({
            type: "POST",
            url: "SubjectTable.aspx/DeleteRecord",
            data: inputData,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                $('#<%=gdViewSubj.ClientID%>').empty();
                if (data.d.length > 0) {
                    fillGrid(data);
                }
            },
            failure: function (data) {
                alert(data.d);
            }
        });
    }
    return false;
}
function fillGrid(data) {
    $('#<%=gdViewSubj.ClientID%>').append("<tr><th>SUBJ_ID</th><th>SUBJ_NAME</th><th>HOUR</th><th>SEMESTER</th></tr>");
    for (var i = 0; i < data.d.length; i++) {
        $('#<%=gdViewSubj.ClientID%>').append("<tr><td>" +
                    data.d[i].SUBJ_ID + "</td> <td>" +
                    data.d[i].SUBJ_NAME + "</td> <td>" +
                    data.d[i].HOUR + "</td> <td>" +
                    data.d[i].SEMESTER + "</td></tr>");
    }
}

所以当我一步一步检查脚本时,我发现一切都很好,gridview 被清除,然后在没有删除行的情况下填充。但是在脚本页面重新加载结束后,我看到了旧行。如果我关闭页面并再次打开它,我会得到一个更新的表格。

这个问题的根源是什么以及如何解决?

【问题讨论】:

  • 难道您只是在return 之前缺少; 这里OnClientClick="DeleteRecord() return false;
  • 哦,多么愚蠢的错字。谢谢。

标签: asp.net ajax webforms


【解决方案1】:

看起来您在 onClientClick 事件的DeleteRecord() 之后缺少;

但如果你不使用 asp:Button 的内置功能。为什么不只使用常规按钮。这样,asp.net 框架就不会向它添加任何回调函数。如果您添加runat="server" 标签,您仍然可以修改服务器端的按钮。试试改成这个

&lt;button ID="btnDelete" runat="server" Class="btn btn-default" onclick="DeleteRecord(); return false;" &gt;Delete a row&lt;/button&gt;

【讨论】:

  • 是的,问题出在这个错字上。这就是为什么我不喜欢 js :)
【解决方案2】:

你的点击功能:

DeleteRecord() return false;

会抛出错误:

意外的令牌返回

您需要以分号结束您的第一条语句。

DeleteRecord(); return false;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-14
    • 2020-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多