项目中遇到这样一个问题:从数据库中检索出两个字段id和value,前台根据id将value绑定到控件,
要求使用Ajax异步。
我尝试使用类的泛型集合来传输取出的数据,建立一个有两个string字段的类IdAndValue,数据层将dataReader中的数据逐个赋给类实例后添加到List<IdAndValue>集合中然后返回到web service,前台JavaScript调用web service,调用成功的回调函数参数value,使用的是。net asp.net Ajax 框架。
这时有一个问题,从web service获得的返回值错误,提示超出数组索引范围。
我尝试将返回类型改成字符串泛型List<string>和 单个类实例IdAndValue,都获得成功。这是什么原因呢?是.net的Ajax框架不支持类泛型集合吗?如果不用这种方法,用类似哈希字典怎么做?

解决方案 »

  1.   

    ajax接受参数默认应该是xml对象,
    首先保证后台的对象能正确序列化成xml才可以,这个单独测试下传送的对象。
    如果用哈希来传输,用的索引可能就是乱的了。
      

  2.   

    针对一楼HS表的问题,用这样的方法创建HS表,索引就不会乱了,希望能帮助你:
    using System;
    using System.Collections;namespace NoSortHashtable
    {
        /**//// <summary>
        /// Summary description for NoSortedHashtable.
        /// </summary>
        public class NoSortHashtable : Hashtable
        {
            private ArrayList keys = new ArrayList();        public NoSortHashtable()
            {
            }
                    public override void Add(object key, object value)
            {
                base.Add (key, value);
                keys.Add (key);
            }        public override ICollection Keys
            {
                get
                {
                    return keys;
                }
            }        public override void Clear()
            {
                base.Clear ();
                keys.Clear ();
            }        public override void Remove(object key)
            {
                base.Remove (key);
                keys.Remove    (key);
            }
            public override IDictionaryEnumerator GetEnumerator()
            {
                return base.GetEnumerator ();
            }
      

  3.   

    用过ajax异步查询,获得数据
    http://www.cnblogs.com/dflying/archive/2007/06/15/784053.html
    http://www.cnblogs.com/chsword/archive/2007/03/16/677776.html
      

  4.   

    又仔细检查了一下,TMD原来我不小心把webservice文件拖到别的目录去了,
    还是原来的代码,
    调试通过!
    还是谢谢各位!