【问题标题】:How to fix Sys.ArgumentTypeException: Object of type 'Object' cannot be converted to type 'Function'如何修复 Sys.ArgumentTypeException:“Object”类型的对象无法转换为“Function”类型
【发布时间】:2013-08-04 17:50:35
【问题描述】:

我的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" 添加到我的脚本管理器来消除上述错误。但它不能解决我的问题。我在JavaScript 上有一个gridview,我正在尝试从gridview 中的textbox 获取修改后的值。但它总是给我旧的价值。未修改值。

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

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

【问题讨论】:

  • 你想用上面的代码实现什么?

标签: c# javascript jquery asp.net scriptmanager


【解决方案1】:

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

如果您想在异步回发结束后调用代码,您应该使用 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);

【讨论】:

    猜你喜欢
    • 2023-02-07
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 2011-10-04
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多