我的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"
添加到我的脚本管理器来删除上述错误。但它不能解决我的问题。我在gridview
上有一个JavaScript
,我正在尝试从textbox
中的gridview
获取修改后的值。但总是它给了我旧的价值。没有修改价值。
将ScriptMode="Release"
添加到我的脚本管理器中会隐藏错误。但我的问题并没有解决。
我想知道为什么我会收到此错误并以正确的方式解决此问题。
答案 0 :(得分:0)
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);