今天对于AjaxPro的《本机测试一切正常,传到服务器上浏览器提示我的AjaxPro 未定义》。
具体问题是:初次访问页面,会出现“AjaxPro未定义错误”,多刷新几次,便一切正常,签于方便,又上网开始搜索相关资料,有段文章如下总结了两点
///网络上的总结开始/
原因和解决:
1.没有将AjaxPro加载放在form1以内,有篇文章写得不错:
2.忘记在服务器的web.config里面添加Handler
在<system.web>节点下加入:
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
注意:这里省略了譬如编码错误,类名写错等错误导致的AjaxPro 未定义的错误.
///网络上的总结结束/
但是我照样子设置了第一个解决办法,还是一样的情况,无奈下,又开始搜索,解决答案真是多种多样,最后还是一样的情况,于是发觉相当的奇怪,没办法,搜索还是一样的结局,最后下定还是自己来。
查看网页源代码,发现AJAX生成的类似如下代码段
<script type="text/javascript" src="/WEB/ajaxpro/prototype.ashx"></script>
<script type="text/javascript" src="/WEB/ajaxpro/core.ashx"></script>
<script type="text/javascript" src="/WEB/ajaxpro/converter.ashx"></script>
<script type="text/javascript" src="/WEB/ajaxpro/XXXX,XXX.ashx"></script>
在本地可以正常访问的到,而在服务器却不可访问,查看IIS的配置——映射又已经添加了“.ashx”的扩展名类型,就在这一步上没有认真考虑,后面又绕回检查编码问题,就这样子花了我一上午时间,真是NND,最后无意中发现虽然服务器上的“WEB/ajaxpro/converter.ashx”这四个文件不能访问,但有提示下载可无法下载,于是想到是否被filter掉,想到了应该服务器有安装8SIGN之类的防火墙过滤软件(因为常在旅游局,所以经常看到他们做这配置),发现在允许的扩展名中没有“.ashx”,便立即添加进去,再是访问,终于OK。哎!