你怎么用的?eval时要注意加上()var o=eval('('+xxxxxxxxx变量+')')

解决方案 »

  1.   

    如你所说,我前段代码是这样  $(document).ready(function(){
             
                $.ajax({
                    type: "post",
                    url: "test4.aspx/GetSupplier", //后台webservice里的方法名称
                    
                    dataType: "json",
                    contentType: "application/json;charset=utf-8",
                    data: '{}',
                    traditional: true,
                    success: function(data) {
                        
                        for (var i in data) {
                            var jsonObj = $.parseJSON(data[i]);
                            var optionstring = "";
                            for (var item in jsonObj) {
                                jsonObj = eval('('+jsonObj.Table+')');
                                for (i = 0; i < jsonObj.length; i++) {
                                    optionstring += "<option value=\"" + jsonObj[i].id + "\" >" + jsonObj[i].name + "</option>";;
                                }
                                //                            alert(optionstring);
                            }
                            $("#ddl1").html(optionstring);
                        }
                    },
                    error: function(msg) {
                        alert("出错了!");
                    }
                });
            });
     <div>
        <select id="ddl1" name="supplier"></select>  
        </div>
    后台代码是这样[WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        ///绑定供应商  
        public static string GetSupplier()
        {
            string ReturnValue = string.Empty;
            string sql = "select deptid, name from network_department where canuse='0'";   //sql语句
            C_DataCommon dcCommon=new C_DataCommon();
            DataTable dt = dcCommon.GetDataTable(sql);  //数据库帮助类 返回databale类型
            ReturnValue = DataTableJson(dt);
            return ReturnValue;
        }
        #region dataTable转换成Json格式
        /// <summary>     
        /// dataTable转换成Json格式     
        /// </summary>     
        /// <param name="dt"></param>     
        /// <returns></returns>     
        public static string DataTableJson(DataTable dt)
        {
            StringBuilder jsonBuilder = new StringBuilder();
            //jsonBuilder.Append("");
           // jsonBuilder.Append(dt.TableName.ToString());
            jsonBuilder.Append("{\"");
            jsonBuilder.Append(dt.TableName.ToString());
            jsonBuilder.Append("\":[");
            //jsonBuilder.Append("\"[");
            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("\":\"");
                    jsonBuilder.Append(dt.Rows[i][j].ToString());
                    jsonBuilder.Append("\",");
                }
                jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
                jsonBuilder.Append("},");
            }
            jsonBuilder.Remove(jsonBuilder.Length - 1, 1);
            //jsonBuilder.Append("]\"");
           // jsonBuilder.Append("\"");
            jsonBuilder.Append("]");
            jsonBuilder.Append("}");
            return jsonBuilder.ToString();
        }
        #endregion  运行的时候老是提示 Invalid JSON   这哪里不对啊
      

  2.   

    asp.net返回的json对象只有一个属性为d。。你返回json串会被当做字符串放到d属性里面,d属性值是字符串,不是对象。。你最好不要用for(x in object)来遍历,直接
    var s=data.d;
     data=eval('('+s+')');自己用开发工具看到底返回了什么格式的字符串。。因为你使用的是动态的键名称,要么你就写来  jsonBuilder.Append(dt.TableName.ToString()); 
    //==>写死成,和你的js代码一直
     jsonBuilder.Append("Table");jsonBuilder.Append(dt.Columns[j].ColumnName);
      

  3.   

    返回的JSON 无非就是哪里多了逗号,分号,空数据,仔细检查下格式即可。
      

  4.   

    用 http://www.bejson.com/ 解析的 json格式正确呢。