您好,我有一个aspx页面,其中我有以下代码
<asp:ScriptManager ID="scriptManager" runat="server" AsyncPostBackTimeout="500" EnablePageMethods="true">
</asp:ScriptManager>
<script type="text/javascript">
Sys.Application.add_init(BeginRequestHandler);
Sys.Application.add_init(EndRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function BeginRequestHandler(sender, args) {
AsynProcessing('block', 'AlertDiv', 'ProcessingImage');
}
function EndRequestHandler(sender, args) {
AsynProcessing('none', 'AlertDiv', '');
}
function AsynProcessing(visstring, elem, img) {
var adiv = $get(elem);
adiv.style.display = visstring;
adiv.image = img;
}但是页面抛出了一个javascrip错误,因为'Sys.WebForms.PageRequestManager‘为空或者不是一个对象。我已经把放在scriptmanager标签下面了。我甚至还添加了
<xhtmlConformance mode="Transitional"/>在web.config.But的部分中,仍然得到相同的错误。
任何帮助都是非常感谢的。提前感谢
发布于 2011-08-15 15:15:51
在调用Sys.WebForms.PageRequestManager之前,用这段代码包装您的处理程序,以便等待所有必要的脚本加载完毕
Sys.Application.add_init(function(){ ... your code ....}http://msdn.microsoft.com/en-us/library/bb397532.aspx
编辑:这行Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler)错误的原因是脚本还没有加载,所以如果你想要处理异步回发,你必须编写类似这样的代码:
Sys.Application.add_init(function(){
Sys.WebForms
.PageRequestManager
.getInstance()
.add_beginRequest(BeginRequestHandler)
});用通俗易懂的英语来说是什么意思?等待所有脚本(包括Sys.WebForms命名空间)加载完毕,并订阅event beginRequest,您的脚本块应如下所示:
<script type="text/javascript">
Sys.Application.add_init(function () {
Sys.WebForms.PageRequestManager.getInstance().add_beginRequest(BeginRequestHandler);
});
Sys.Application.add_init(function () {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
});
function BeginRequestHandler(sender, args) {
AsynProcessing('block', 'AlertDiv', 'ProcessingImage');
}
function EndRequestHandler(sender, args) {
AsynProcessing('none', 'AlertDiv', '');
}
function AsynProcessing(visstring, elem, img) {
var adiv = $get(elem);
adiv.style.display = visstring;
adiv.image = img;
}
</script>发布于 2011-08-15 14:45:09
您的JavaScript代码块似乎是在ASP.net Ajax加载之前执行的,请尝试将此代码放在页面底部或<form>标记之后……
发布于 2012-06-13 02:48:00
我也遇到过这个问题。对我来说,这是由于一个网络场和web.config中缺少机器键条目造成的。
<system.web>
<machineKey validationKey="D61B3C89CB33A2F1422FF158AFF7320E8DB8CB5CDA1742572A487D94018787EF42682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey="FBF50941F22D6A3B229EA593F24C41203DA6837F1122EF17" />
https://stackoverflow.com/questions/7062286
复制相似问题