这几天赶一个项目,用到了Ajax,准备研究了一下,可刚学就遇到了一个很怪的问题,
在网上搜了好久都没人提,难道大家在这一步都一帆风顺?我使用VisualStudio2003,具体描述如下:
ASP.NET使用Ajax主要分为5个步骤(粗略描述一下):
1添加Ajax引用
2在WebConfig.xml中添加
<httpHandlers>
<!-- Register the ajax handler -->
<add verb="POST,GET" path="ajax/*.ashx"
type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>
3在Page_OnLoad()事件中添加Ajax.Utility.RegisterTypeForAjax(typeof(WebForm1));
4标记服务端代码[Ajax.AjaxMethod()]
5在javascript中调用服务端
问题就出在这第五步:
按照Ajax的QuickGuide,在javascript中使用WebForm1.GetValue()调用服务端方法(WebForm1是我注册的类,GetValue()是我注册的要在javascript中调用的服务端方法),可一执行IE提示“'WebForm1'未注册”,靠,真他妈见鬼,估计世界上没人会遇到这问题。整整弄了三天,都重装系统了,一无所获,郁闷啊。
最后将《ASP.NET 调味品:AJAX》上的javascript那段代码完全Copy过来,问题解决了!
Copy的javascript代码段(当然,在自己程序中使用做了些许改动):
<script language="javascript">
WebForm1.GetValue(GetValue_CallBack);
function GetValue_CallBack(response)
{
alert(response.value);
}
</script>
结论: 问题还是出在自己这里:因为着急赶项目,javascript代码中的调用方法和服务端定义方法名称不对称,
所以导致javascript就是不认WebForm1这个变量,提示'WebForm1'未注册,其实这种错误只要仔细检查检查代码
就能发现,还好我定力好,跟他死磕,问题解决!!!