ajaxpro类对象未定义错误,再解决不了就放弃ajax了
web.config
<httpHandlers>
<add verb= "POST,GET " path= "ajaxpro/*.ashx " type= "AjaxPro.AjaxHandlerFactory, AjaxPro " />
</httpHandlers>
namespace Tajax
{
public class messagesAjax : System.Web.UI.Page
{
[AjaxPro.AjaxMethod]
public string getNewMessages(int lx,int memeberID)
{
}
}
}
namespace SchoolOA
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
AjaxPro.Utility.RegisterTypeForAjax(typeof(messagesAjax));
}
}
<script language= "javascript ">
var strMess=Tajax.messagesAjax.getPopMessages(1,2).value;
</script>
错误提示Tajax未定义,
------解决方案--------------------在IIS6中 将文件类型.ashx添加到 iis可以输出的类型中
------解决方案--------------------楼主有没有搞错,你调用的方法是:
Tajax.messagesAjax.getPopMessages(1,2)
而你的声明的服务器端方法是:
[AjaxPro.AjaxMethod]
public string getNewMessages(int lx,int memeberID)
哪来的getPopMessages方法让你调用呢?
------解决方案--------------------AjaxPro.Utility.RegisterTypeForAjax(typeof(messagesAjax));改成AjaxPro.Utility.RegisterTypeForAjax(this.GetType());
var strMess=Tajax.messagesAjax.getPopMessages(1,2).value;改成
var strMess= <%=this.GetType());%> .getPopMessages(1,2).value;
------解决方案--------------------能把具体的错误信息贴出来吗?比如那个类对象未定义,如果提示AjaxPro类对象未定义,事实上这个类是在core.ashx中定义的。
试试是否使用http://域名/ajaxpro/core.ashx访问,
然后在出错页面上右键查看源代码
检查是否有类似如下脚本注册
<script type= "text/javascript " src= "/ajaxpro/core.ashx "> </script>
如果没有,说明你代码页忘了AjaxPro.Utility.RegisterTypeForAjax(typeof(messagesAjax));
如果提示其他类未定义,那么可能是对应的类型未注册,请检查注册类型AjaxPro.Utility.RegisterTypeForAjax
------解决方案--------------------var strMess= <%=this.GetType());%> .getPopMessages(1,2).value;
是错误的,this.GetType不能正确获取到的。它将来的值是ASP.页面类型,这样就导致了错误。
正确答案:
如果你的ajax方法放到页面后台,假设这个页面名字是abc.aspx
那么
abc.aspx.cs
// page_load
AjaxPro.Utility.RegisterTypeForAjax(typeof(abc));// 注意页面的类型:public partial class abc与这里是对应的。
// 方法定义
[AjaxPro.AjaxMethod]
public string getPopMessages(int lx,int memeberID)
js:
var strMess = abc.getPopMessages(1,2).value;
------解决方案--------------------.ashx文件在磁盘上是看不到的,它会经过httpHandlers处理,不是以文件方式访问的。
------解决方案--------------------对于带有命名空间的,那么
abc.aspx.cs
// page_load
AjaxPro.Utility.RegisterTypeForAjax(typeof(Tajax.类名));// 注意命名空间和类名与这里是对应的。
js:
var strMess = Tajax.类名.getPopMessages(1,2).value;
------解决方案--------------------如果想知道ajaxpro注册的客户端代理的js引用,可以看以下代码
Type type = typeof(aaa);
string assemblyName = type.FullName + ", " + type.Assembly.FullName.Substring(0, type.Assembly.FullName.IndexOf( ", "));
if (type.Assembly.FullName.StartsWith( "App_Code. "))