AjaxPro使用注意事项与返回数据库中数据时2.0和3.5/4.0的区别(我的心得)
一、使用Ajaxpro
在web.config中的<system.web>节点加上
<httpHandlers >
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
在page_load中注册:
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(ExamCalendar.Index));
}
定义后台方法:
[AjaxPro.AjaxMethod]
public string Say()
{
return "你好吗?";
}
在前端使用:卸载javascript中:
ExamCalendar.Index.GetAllExam(Say);
其中ExamCalendar.Index是这么来的:
调用的一个函数:
function GetAllExam(res) {
alert(res.value);
}
在页面上写一个按钮触发这一句话即可:
ExamCalendar.Index.GetAllExam(Say);
注意了:
我测试了好长时间才试出来的.
不能直接使用alert(ExamCalendar.Index.GetAllExam(Say).value);(大家别听网上有一部分人这么建议使用,页面数据取出来了,但是在ie上测试时,数据时出来了,但是过十几秒就会出现如下问题)
所以初学者要按照我之前写的方法去做,才不会出现这种情况!
二、在后台连接数据库之后想将数据库中的数据作为一个json型返回,然后在前台反序列化,显示出来。
可是在.net2.0中就出问题了。
解决方案如下:
在3.5、4.0中管用的:
T_ExamCalendarTableAdapter adapter = new T_ExamCalendarTableAdapter();
var exam = adapter.GetAllData();
List<Dictionary<string, string>> list = new List<Dictionary<string, string>>();
foreach (var row in exam)
{
var Dic = new Dictionary<string, string> {
{"ExamSubject",row.ExamSubject},
{"LanguageClass",row.LanguageClass},
{"ExamTime",row.ExamTime},
{"ExamAccurateTime",row.ExamAccurateTime},
{"RelatedData",row.RelatedData},
{"RelatedDataUrl",row.RelatedDataUrl},
{"RelatedCourse",row.RelatedCourse},
{"RelatedCourseUrl",row.RelatedCourseUrl},
{"Remarks",row.Remarks}
};
list.Add(Dic);
}
JavaScriptSerializer jss = new JavaScriptSerializer();
return jss.Serialize(list);
1、在2.0中应该将 foreach (var row in exam)改成:
foreach (test.DAL.DataSet.T_ExamCalendarRow row in exam)
2、到网上下载:System.Web.Extensions.dll文件,将其引进来即可使用JavaScriptSerializer了。