在调用ajax太多次后,Asp.net OnClick事件不会触发。

时间:2017-01-20 10:10:23

标签: javascript asp.net ajax gridstack

我正在使用仪表板并使用gridStack。我正在使用ajax更新数据库。数据是html元素的x,y位置(页面上的一些div)。这是我的javascript代码:

// The "dragstop" fucntion is called when I stop dragging the <div> element.

     $(".grid-stack").on("dragstop", function () {
        setTimeout(function () {
            saveAllWidgets();
        }, 100);
    });


function saveAllWidgets() {
    var serializedData = _.map($('.grid-stack > .grid-stack-item:visible'), function (el) {
        el = $(el);
        var id = el.attr('id');
        var node = el.data('_gridstack_node');
        return {
            x: node.x,
            y: node.y,
            width: node.width,
            height: node.height,
            id: id
        };
    });

    var jsonString = JSON.stringify(serializedData);
    try {
        $.ajax({
            type: "POST",
            url: '/STARCOHttpHandlers/UpdateDashboardWidget.ashx',
            contentType: "application/json; charset=utf-8",
            data: jsonString,
            dataType: "json",
            success: function(data){
    //I am always getting the success response and I checked DB is also updating
                console.log(data); 
            },                 
            error: function(){
                console.log("some error occoured db is not updated!!");
            }
        });
    } catch (e) {
        alert(e);
    }
}

现在的问题是我是否过于频繁地调用上述函数(拖放太多)。然后单击下面提到的asp.net按钮,页面重新加载但OnClick事件不会被触发(在调试模式下,代码根本不被调用)。页面重新加载后,我第二次单击此按钮,然后触发onClick事件。

<asp:Button runat="server" ID="btnUndoChanges" CssClass="btn" Text="Undo all changes" OnClick="btnUndoChanges_OnClick"/>

 protected void btnUndoChanges_OnClick(object sender, EventArgs e)
        {

            return;
        }

我不知道为什么它的表现如此。它可能与IIS安全性或视图状态有关吗?

1 个答案:

答案 0 :(得分:0)

花了2天后,我发现这是ViewState的错误。我补充说这可能会对使用GridStack.JS

的人有所帮助

我添加了以下代码行,它解决了问题。

protected override void OnInit(EventArgs e)
        {
          Page.ViewStateMode = ViewStateMode.Disabled;
        }