学习了Ajax基本控件的使用后,练习通过客户端脚本显示或者隐藏进度信息的过程中,运行的时候总是提示Microsoft JScript 运行时错误: 'Sys' 未定义 。用这个信息到网上一查,有N多的解决方法,什么配置文件的问题啦,什么权限控制的问题啦,都没有解决我的问题,弄得郁闷了半天。
(注:XP-SP3,Vs2008—SP1,AjaxExtend1.0,项目是Web site with ASP.NET 2.0 AJAX Extensions 1.0 features enabled (.NET Framework 2.0))
我的在之前的练习的时候都是正常运行的,根本就没有动过web.config配置文件的内容,需要加的那些配置内容都已经有,不然之前都不可能正常运行不是?搜索了很久了以后,网上有人提到是身份验证的问题,主要是Ajax封装的ScriptResource文件没有办法解析,仔细看看,好像是针对IIS的,我都还只是在练习而已嘞。查看原文:http://www.jcwcn.com/html01/Ajax/16_56_33_449.html
经过了一番的摸索以后,终于使用一个颇为简单的办法解决了,原来是顺序的问题,代码奉上:(好像没有啥意义哈,别扔鸡蛋)
![ContractedBlock.gif](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![ExpandedBlockStart.gif](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
1 <script type="text/javascript" language="javascript">
2 function CancelAsyncPostBack() {
3 var prm = Sys.WebForms.PageRequestManager.getInstance();
4 if (prm.get_isInAsyncPostBack()) {
5 prm.abortPostBack();
6 }
7 }
8 </script>
代码是很简单的,开始的时候我是紧跟着放在了<head>标签的后<Form>标签的前面,后来我看到vs提示错误的时候我忽略过去,script代码就被逐步的解析出来了,而且正常运行,就猜想会不会vs有专门设置不调试script的选项呢?在工具-选项-调试选项卡中发现有一个实时调试脚本选项,没有解决,紧接着,我选择了不调试直接运行,这下好了,vs不报错了,不过IE8开始替我捕捉了,问题依旧没有解决。 再次猜想,忽略了错误后依旧可以正常运行,那就是语句顺序的问题,我就把上段代码放到了</Form>的后面,结果可以正常运行了,没有报错!good。
验证发现只要是讲脚本放到<Form>标签后面就可以了, 另外脚本的引用也是必须这样放置。 原因的话我像应该是sys由scriptmanage代码,必须要放在服务器端运行。具体机制尚不清楚,有谁知道的话请指教。
出处: http://cnblogs.com/xiaoxia
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明.