function delCallBack(res) {
            if (res != null && res.value != null) {
                var resInfo = res.value;
                alert(resInfo.data);
}这里res是后台AjaxPro方法返回的Json格式的字符串。我直接alert(res.value)可以弹出这样的字符串--》{data:"成功",info:"2个"}这本来是一个Json格式的对象,按我的想法是直接可以:alert(resInfo.data),可以得到"成功"的弹框的。这是为什么呢?我只是实验阶段,帮我解释下,谢谢。

解决方案 »

  1.   

    而实际情况,却是弹出"undefined"
      

  2.   

    var resInfo = {data:"成功",info:"2个"} 
    alert(resInfo.data);
    是否可以或使用resInfo[0].data
      

  3.   

    var resInfo = {data:"成功",info:"2个"} 
    这个应该就是个对象的 啊如果前面加了个[var resInfo = {data:"成功",info:"2个"}]
    的形式可能需要加索引。而且我这个resInfo就可以弹出来。
    但是后面再加对象属性就不行了。实践过了,加[0]是不行的。。
      

  4.   

    注意javascript。
    你定义的resInfo是个简单数据类型,他并没有data或者info属性
    实际上var resInfo = res.value;赋值后resinfo就是个简单的字符串
    要实现你想的,需要自己定义resInfo对象,自己解析data:"成功",info:"2个"格式的字符串
      

  5.   

    你可以自己定义个resInfo对象,如function resInfo(value){
        this.value = value;
        this.data = parseData(this.value);
        this.info = parseInfo(this.value);
        this.parseData = function(str){/*Todo...*/};
        this.parseInfo= function(str){/*Todo...*/};
    }parseData和parseInfo解析json字符串,分别得到data和info值
      

  6.   

    然后你的代码就可以这样用:
    function delCallBack(res) { 
                if (res != null && res.value != null) { 
                    var _resinfo = new resInfo(resres.value); 
                    alert(_resinfo.data); 

      

  7.   


    忽然想到你也可以在ajaxpro里修改,给他返回的res对象的value加上data和info属性,就可以直接用
    res.value.data和res.value.info了。
      

  8.   


    谢谢,实验成功其实,我是public JsonClass()
            {
            }        public JsonClass(string info, string data)
            {
                this.Info = info;
                this.Data = data;
            }        private string _info;
            private string _data;
            public string Info
            {
                get { return _info; }
                set { this._info = value; }
            }
    ...这样的一个类的形式,返回出来的。。我之前之所以错误,是因为我方法返回的是jsonclass.tostring()了,其实我方法直接可以返回出jsonclass就可以,实现效果了。---但是碰到另一个问题了,一般我们异步的时候,我们都是从数据库中查出一个DataTable而我们js应用的时候,一般需要Json格式,当我们这种情况的时候,我们可以写方法,直接把DataTable转换为Json格式,之前我都直接返回string格式的Json格式,当然这种情况用在Jquery里面,是没有问题的,直接返回出去,我就可以把他当对象用。但是在AjaxPro中,我就无法定义个类而返回出去了。有没有好的方法
    因为我不能查一个方法,去为他定义一个实体类的。。当然我们可以直接在后台拼HTML给前台返回,但是我觉得Json更好点吧。。--不知道说清楚了我的疑问没有
      

  9.   

    附上一般的Json转DataTable的方法
    public static string DataTable2Json(DataTable dt)
            {
                System.Text.StringBuilder jsonBuilder = new System.Text.StringBuilder();
                jsonBuilder.Append("[");
                if (dt.Rows.Count == 0)
                {
                    jsonBuilder.Append("]");
                    return jsonBuilder.ToString();
                }
                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    jsonBuilder.Append("{");
                    for (int j = 0; j < dt.Columns.Count; j++)
                    {
                        jsonBuilder.Append("\"");
                        jsonBuilder.Append(dt.Columns[j].ColumnName);
                        jsonBuilder.Append("\":\"");
                        try
                        {
                            jsonBuilder.Append((dt.Rows[i][j].ToString().Replace("\"", "\\\"")).Replace("\n", "\\r\\n"));
                        }
                        catch
                        {
                            jsonBuilder.Append("");
                        }
                        jsonBuilder.Append("\",");
                    }
                    jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                    jsonBuilder.Append("},");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("]");
                return jsonBuilder.ToString();
            }