关于 Sys.ScriptLoadFailedException

在做一个项目,延续前一个版本的功能,要使用一些 ASP.NET Ajax 的功能。可是我不甘心简单的使用 UpdatePanel,于是在读《ASP.NET Ajax 程序设计》,想了解的全面一些。已经有日子没有读这种很具体的技术书了,因为觉得没有意思,可是为了项目,没有办法。

前些日子写了一段在传统 Web 模式下 Postback 后显示 alert 功能的代码,今天决定针对 Ajax 做下改进,于是下午的二个多小时就浪费在一个细节的问题上,还好,最后搞定了。

基本的思路是这样的(因为直接调用 alert,是先弹出对话框,再完成页面加载,效果很不好):

  1. 使用 ScriptManager.RegisterClientScriptInclude 注册一个 JavaScript 文件
  2. 增加两个 HiddenField 用来存储错误信息和获得焦点的控件
  3. 调用 JavaScript 文件中的函数完成功能(在 body onload 事件中显示 alert)

但是 IE 总是提示 Sys.ScriptLoadFailedException: The script ... failed to load. Check for: Inaccessible path。我反复试了几种不同的方法,也确认了 JavaScript 路径是正确的,可是问题依旧。

最后终于想起了在《ASP.NET Ajax 程序设计》中 Dflying Chen 说的一段话:在浏览器成功下载 MicrosoftAjax.js 之后,客户端 ASP.NET Ajax 框架即刻开始初始化。因此后续的脚本文件必须在下载完成时发出通知,以便客户端 ASP.NET Ajax 框架接下来进行这部分脚本的初始化等后续操作。在 ASP.NET Ajax 页面中,每一个将要与客户端框架协同运行的脚本文件的末尾都必须包含如下一行代码,用来发出这个通知。

1None.gifif (typeof(Sys) != "undefined" )
2ExpandedBlockStart.gifContractedBlock.gifdot.gif
{
3
InBlock.gif    Sys.Application.notifyScriptLoaded() ;
4ExpandedBlockEnd.gif}

就是这样的,加了上面的代码后,问题解决了。

转载于:https://www.cnblogs.com/gucsnet/archive/2008/07/09/1239514.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值