尊敬的先生:
我用了您关于AjaxPro文章的做法,编辑了一点小程序,但编译和运行都未显示错误,可是的回馈函数是却看不到输出结果,又不能调试,想请您给看一下,问题出在哪里?
先谢了!
1. 这是Form_Load中的类型声明语句。
AjaxPro.Utility.RegisterTypeForAjax(typeof(TestProject_BusinessArchives_TreeLeft));
2. 这是后台的Ajaxpro函数:
public string GetNodeClassByNodeId(int nodeId)
{
businessArchives.Load(nodeId);
return businessArchives.NodeClass;
}
3.这Script中的回调函数:
function getNodeClass_callback(response) {
var dt = response.value;
alert(dt);
}
4. 这是Script中的调用AjaxPro语句:
TestProject_BusinessArchives_TreeLeft.GetNodeClassByNodeId(ind, getNodeClass_callback);
我在后台中可以看到客户端传来的参数是正确的。而且后台的函数确信可以执行并返回正确的结果。可为什么在客户端的输出函数总显示为null?
我自己现在发现4.处的调用函数中的实参ind 的类型是 string,但后台被调用函数的该参数却声明为int,不知是不是这个问题,我明天再查下。谢谢您!
今天一上班,就把那个方法的形参和实参类型调整了,可结果仍然为NULL。
个人体户编程,遇到一个问题就把人卡住了,一点办法也没有。
一般都是注册和回调的问题,一个是你注册的名称和你在js中调用的名称要一致
注意:需要加上[Ajax.AjaxMethod]标识,这样才能够被客户端访问
@amityat: 谢谢!您讲的那个标志我的后台Ajaxpro函数前是有的。
@黄叶梧桐: 你有没有邮箱,我给一个demo你吧!
@黄叶梧桐: demo估计网上有好多,已经写好了一个,通过写这个demo我猜测故障原因,
1,需要注意AjaxPro.net版本,我也搞不清Ajax2.dll,与Ajax.dll是什么区别.你百度下,呵呵,我直接用的是Ajax2.dll
我刚才测试的是: http://ajaxpro.codeplex.com/releases/view/23363
web.config配置:
<httpHandlers> <add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2, Version=9.2.17.1, Culture=neutral, PublicKeyToken=4735ae9824c7d3ec"/> </httpHandlers>
2,对于调试的时候,调用服务器端的方法注意大小写
3,调用的时候调试,用firefox firebut调试,查找js文件,看看其中你调用的方法有没有注册成功
businessArchives是后台控件吧?
就算是AjaxPro,虽然到了后台,但是它是不能操纵后台控件的,也不能获取后台控件的数据
您好!谢谢。
那个businessArchives是后台定义的一个类型。不是后台控件,我的控件都在前台定义的。
这个问题向前走了一步,原来是后台的Ajax函数出了问题,这个函数在被c#正常处理时能返回正常的值,但当标记为【Ajaxpro.AjaxMothod】后,不知道什么原因,这个函数根本就没有运行,而是直接返回一个“Null”,并把这个NULL返回到前台回调函数。即在前台总得到一个“NULL”,但问题是,这类Ajaxpro.AjaxMothod方法,难道不能使用后台定义的类及方法吗?又是一个巨大的障碍。