前台jquery想生成以下格式的json数组var events=[{ 'FirstID': 1,  },{ 'SecondID': 2, }];回送的getjson方法$.getJSON("SomethingNews.ashx",{num:"event"},function(json) { 
        
         
  });
后台asp.net的ajax输出和getjson方法该如何写,才可以产生json对象 而不会认为是字符串System.Web.HttpContext.Current.Response.Write("")         

解决方案 »

  1.   

     public static string Datajosn(DataTable dt, bool dtName)
            {
                StringBuilder sb = new StringBuilder();
                StringWriter sw = new StringWriter(sb);            using (JsonWriter jw = new JsonTextWriter(sw))//创建定义写JSON的JsonWriter类
                {
                    JsonSerializer ser = new JsonSerializer();//创建非自定义读写JSON的JavaScriptSerializer类。                jw.WriteStartArray();//创建 JSON 文本 [
                    foreach (DataRow dr in dt.Rows)
                    {
                        jw.WriteStartObject();// 创建 JSON 文本{                    foreach (DataColumn dc in dt.Columns)
                        {
                            jw.WritePropertyName(dc.ColumnName);                        ser.Serialize(jw, dr[dc].ToString());
                        }                    jw.WriteEndObject();//创建 JSON 文本  }
                    }
                    jw.WriteEndArray();  //创建 JSON 文本     ]                sw.Close();
                    jw.Close();
                }
                return sb.ToString();引用 Newtonsoft.Json.dll
      

  2.   

    第一:
    http://blog.csdn.net/wangjun8868/archive/2008/11/19/3334690.aspx
    第二:
    http://blog.csdn.net/wangjun8868/archive/2008/09/23/2967007.aspx  /// <summary>
         /// 定义一个方法用来输出标准的JSON格式数据
         /// </summary>
         /// <param name="info">用来描述一般字符串</param>
         /// <param name="sta">这个用来表示和ajax传输过来数据比较的一个key和value,不一定非用这个表示</param>
        /// <returns>返回标准JSON格式字符串</returns>
         private string CreareJson(string info,int sta) 
         {
             return "{\"info\":\"" + info + "\",\"sta\":" + sta + "}";
         }
      

  3.   

    这么说吧 已经返回了"[{ 'FirstID': 1,  },{ 'SecondID': 2, }]" 字符串前台怎么转换?System.Web.HttpContext.Current.Response.Write("") 这里写什么?
      

  4.   

     $.ajax({
            type: "get",//使用get方法访问后台
            dataType: "json",//返回json格式的数据
            url: "Handler.ashx",//要访问的后台地址
            data: "pageIndex=" + pageIndex,//要发送的数据
            complete :function(){$("#load").hide();},//AJAX请求完成时隐藏loading提示
            success: function(msg){//msg为返回的数据,在这里做数据绑定
                var data = msg.table;
                $.each(data, function(i, n){
                    var row = $("#template").clone();
                    row.find("#OrderID").text(n.OrderID);
                    row.find("#CustomerID").text(n.CustomerID);
                    row.find("#EmployeeID").text(n.EmployeeID);
                    row.find("#OrderDate").text(ChangeDate(n.OrderDate));
                    if(n.RequiredDate !== undefined) row.find("#ShippedDate").text(ChangeDate(n.RequiredDate));
                    row.find("#ShippedName").text(n.ShipName);
                    row.find("#ShippedAddress").text(n.ShipAddress);
                    row.find("#ShippedCity").text(n.ShipCity);
                    row.find("#more").html("<a href=OrderInfo.aspx?id=" + n.OrderID + "&pageindex="+pageIndex+">&nbsp;More</a>");                   
                    row.attr("id","ready");//改变绑定好数据的行的id
                    row.appendTo("#datas");//添加到模板的容器中
                });
                $("[@id=ready]").show();
                SetPageInfo();
            }
        });
     给你看一段  对json 数据操作的.
      

  5.   

    http://blog.csdn.net/keyler/archive/2006/11/21/1400818.aspx
      

  6.   

    4楼的朋友 我是想直接生成json数组 不是要查找其中的数据 怎么实现?
      

  7.   

     我对你的问题....迷惑了. 
    private string DataTable2Json(DataTable dt)
    {
    StringBuilder jsonBuilder = new StringBuilder();
    jsonBuilder.Append("{\"");
    jsonBuilder.Append(dt.TableName);
    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("}");
    return jsonBuilder.ToString();
    }
     你想要这个???
     还是要在后台直接获取返回的json数据??
      

  8.   

    context.Response.ContentType = "text/plain";
    //不让浏览器缓存
    context.Response.Buffer = true;
    context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
    context.Response.AddHeader("pragma", "no-cache");
    context.Response.AddHeader("cache-control", "");
    context.Response.CacheControl = "no-cache";
    string result = "";
                            datatable dt=getData();
                            result =DataTable2Json(dt)
    context.Response.Write(result);
      

  9.   

    后台直接返回json数据 不需要datatable的传入 前台要能获得var events=[{ 'FirstID': 1,  },{ 'SecondID': 2, }]; 
      

  10.   

    var ojson = eval('(' + events + ')');
    不知道是不是这个意思
      

  11.   

    ... 后台你先要获取数据,  你想直接就用json 格式????
     用datatable 装数据,再转换成json格式输出就行了. 你还想想怎样.?
    像最开始我给的jq代码.. 你的var events=msg 就是你要的json数据了.
      

  12.   

     这段代码是在ashx 文件执行的 返回你要的json数据.
      

  13.   

    System.Web.HttpContext.Current.Response.Write("[{ 'FirstID': 1,  },{ 'SecondID': 2, }]") 
    后台可以这样输出么?加[ ]然后前台var events;$.getJSON("SomethingNews.ashx",{num:"event"},function(json) { 
            events=eval('(' + events + ')'); 
            alert(events);
      }); 
    -----------
    这时alert显示为[object],怎么才能知道这个events被正确赋值了呢?
      

  14.   


     我擦...我在7楼那段代码你修改修改. 就可以按照你想要的输出格式输出了.
      还有.. 使用jq 的ajax() 这个函数 就可以直到 请求是否成功.. 
    是否有数据 失败的话 还有一个可选方法的
      

  15.   

    其实是想干什么的呢?
    前台试试
    var Json=jQuery.parseJSON(json)
    这样把返回数据以json格式的格式化!
      

  16.   

     int type = 21;
                    if (Request["type"] != null)
                    {
                        type = Convert.ToInt32(Request.QueryString["type"]);
                    }
                    string images = News.GetPicList(type, new DataBase.Reader(News.Getdata));
                    string[] data = images.Split('!');
                    String builder = "[";
                    for (int i = 1; i < data.Length; i++)
                    {
                        string[] datas = data[i].Split('|');
                        builder += "{'title':'" + datas[2] + "',";
                        builder += "'intro':'" + datas[3] + "',";
                        builder += "'comment':'',";
                        builder += "'thumb_50':'images/news/" + datas[5] + "',";
                        builder += "'thumb_160':'images/news/" + datas[5] + "',";
                        builder += "'image_url':'images/news/" + datas[5] + "',";
                        builder += "'createtime':'" + datas[4] + "',";
                        builder += "'source':'gettyimages',";
                        builder += "'id':'" + datas[1] + "'},";
                    }
                    builder = builder.Substring(0, builder.Length - 1) + "]";
                    char a = '"';
                    Response.Write(builder.Replace("'", a.ToString()));
                    Response.End();
    你要这种是吧
      

  17.   

    我的可以返回[{ 'FirstID': 1, },{ 'SecondID': 2, }]  但var events=不知道怎么接收
      

  18.   

    我想他要的是json数组如何获得后台返回的数据吧