0

我的JavaScript功能低于错误。

Uncaught Sys.ArgumentTypeException: Sys.ArgumentTypeException: Object of type 'Object' cannot be converted to type 'Function'.
Parameter name: handler

脚本管理器

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" EnablePartialRendering="true">
</asp:ScriptManager>

JavaScript

<script type="text/javascript">

    function Navigate() {
        $('#dialogDiv').dialog('open');
    }

    Sys.WebForms.PageRequestManager.getInstance().remove_endRequest($(document).ready(function () {
        var list = "";
        $('#dialogDiv').dialog({
            autoOpen: false,
            resizable: true,
            width: 300,
            height: 'auto',
            buttons: {
                "Save": function () {
                    $("#<%=Type_GV.ClientID %> tr").each(function () {
                        //Skip first(header) row
                        if (!this.rowIndex) return;
                        var type = $(this).find("td:last").html();
                        list += type + "</br>";
                    });
                    alert(list)
                }
            }
        });
    })
    );
</script>

ScriptMode="Release"我可以通过添加到我的脚本管理器来消除上述错误。但它不能解决我的问题。我有一个gridviewon JavaScript,我正在尝试从textboxin获取修改后的值gridview。但它总是给我旧的价值。未修改值。

通过添加ScriptMode="Release"到我的脚本管理器隐藏错误。但我的问题没有解决。

我想知道为什么我会收到这个错误以及修复它的正确方法。

4

1 回答 1

0

您要从endRequest Event的处理程序列表中删除的remove_endRequest接受函数。因此,您提供的代码具有无效参数,因为调用返回 jQuery“包装器”对象而不是处理函数。$(document).ready()

如果您想在异步回发结束后调用代码,您应该使用add_endRequest和删除$(document).ready,因为它与异步回发事件无关。

<script type="text/javascript">

    function Navigate() {
        $('#dialogDiv').dialog('open');
    }

    function myEndRequestHandler() {
        var list = "";
        $('#dialogDiv').dialog({
            autoOpen: false,
            resizable: true,
            width: 300,
            height: 'auto',
            buttons: {
                "Save": function () {
                    $("#<%=Type_GV.ClientID %> tr").each(function () {
                        //Skip first(header) row
                        if (!this.rowIndex) return;
                        var type = $(this).find("td:last").html();
                        list += type + "</br>";
                    });
                    alert(list)
                }
            }
        });
    }

    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(myEndRequestHandler);
</script>

当您不需要处理endRequest事件时取消订阅myEndRequestHandler如下:

Sys.WebForms.PageRequestManager.getInstance().remove_endRequest(myEndRequestHandler);
于 2013-08-04T09:50:35.860 回答