今天在写一个Ajax的时候发现了一写问题,写下来给大家分享以下。
为了使js面向对象,但又不用定义类的结构,我在服务器端定义了一个Ajax方法,返回一个空的对象,比如说M_Res。
然后js通过Ajax请求得到这个空的对象之后,在使用Clone的方法重复使用这个对象结构。
但是在对象的值填满后,发现调用失败,原因就出在我这个对象中有几个DateTime类型的字段。如果在JS中不给这几个字段赋值为Date类对象的话,在服务器端就不能找到这个方法(其实就是对象转换失败)。于是我将比如M_Res.CreateDate = new Date("2009/01/01");
哈哈,这样问题就解决了,Ajax调用没有任何问题了。
其实这个Ajax不能自动将字符串转化为Datetime的,呵呵。
另外,AjaxPro需要在页面的Onload事件中注册这个页面的CS代码包含的类。这样也太麻烦了,呵呵。
我在每个页面的基类(PageBase)中的Onload事件中统一注册了,例如:
protected override void OnLoad(EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(this.GetType(), this.Page);
base.OnLoad(e);
}
然后js通过Ajax请求得到这个空的对象之后,在使用Clone的方法重复使用这个对象结构。
但是在对象的值填满后,发现调用失败,原因就出在我这个对象中有几个DateTime类型的字段。如果在JS中不给这几个字段赋值为Date类对象的话,在服务器端就不能找到这个方法(其实就是对象转换失败)。于是我将比如M_Res.CreateDate = new Date("2009/01/01");
哈哈,这样问题就解决了,Ajax调用没有任何问题了。
其实这个Ajax不能自动将字符串转化为Datetime的,呵呵。
另外,AjaxPro需要在页面的Onload事件中注册这个页面的CS代码包含的类。这样也太麻烦了,呵呵。
我在每个页面的基类(PageBase)中的Onload事件中统一注册了,例如:
protected override void OnLoad(EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(this.GetType(), this.Page);
base.OnLoad(e);
}