在网上搜一下sys未定义, 能搜出"无数"篇文章来, 可是里面大多数都不外乎教人改web.config里的xxhandler 节, 改IIS 里的那个权限配置, 这两种做法不知道对多少人有效, 反正是从来没有对我有效过.
我自己遇到的sys未定义经过很艰苦的试验, 终于找到了解决的办法, 可是我又不知道对别人是否有效----=_=#
首先, 从vs2003 升级上来的系统, 很可能会有这个问题:
<xhtmlConformance mode="Legacy"/>
web.config中的这个配置会直接导致ajax 功能无效, 并且出现sys未定义的错误, 所以, 至少要把mode改成Transitional.
此外 , web.config中的
<globalization requestEncoding="GB2312" responseEncoding="GB2312"/>
可能会导致sys 未定义, 因为ajax.net 1.0 设计时没有兼容各种编码格式, 所以如果用utf-8 编码, 是没有问题的, 但是用中文编码, 就可能会出问题, 同样, 在页面上的page指令中, 如果有codepage="936" 之类的指令, 也可能会造成影响.
解决的办法是:
<globalization uiCulture="en" requestEncoding="GB2312" responseEncoding="GB2312"/>
这就既可以保证页面使用中文编码, 又能使ajax能正常工作.
有时候, 整个系统的web.config 无法随意更改, 可以采用一种临时方法:
由于web.config是可以各级目录自定义的, 所以可以在系统中建立一个目录 , 它只覆盖上述两个属性, 则这个目录中的文件就可以不受根目录中的web.config的影响了.