前台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("")
});
后台asp.net的ajax输出和getjson方法该如何写,才可以产生json对象 而不会认为是字符串System.Web.HttpContext.Current.Response.Write("")
解决方案 »
- 我在datalist中加入删除确认,为什么不对呢?帮我看一下。。。谢谢!!!
- 获取下载的文件路径和名称
- sql更新数据
- 为什么PasswordRecovery控件不起作用?
- 两个小问题?
- 在asp.net中如何用owc生成内有图表的excel文件?
- asp.net怎样用Table自动生成表格?
- AspxGrid控件的问题
- 谁知道http://www.zydsoft.com/Product/e2003/index.asp
- asp.net 与sql server连接问题,急!!!!!!!!
- 在Asp.net下如何使用Webbrowser控件
- 异常 System.OutOfMemoryException 内存溢出
{
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
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 + "}";
}
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+"> More</a>");
row.attr("id","ready");//改变绑定好数据的行的id
row.appendTo("#datas");//添加到模板的容器中
});
$("[@id=ready]").show();
SetPageInfo();
}
});
给你看一段 对json 数据操作的.
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数据??
//不让浏览器缓存
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);
不知道是不是这个意思
用datatable 装数据,再转换成json格式输出就行了. 你还想想怎样.?
像最开始我给的jq代码.. 你的var events=msg 就是你要的json数据了.
后台可以这样输出么?加[ ]然后前台var events;$.getJSON("SomethingNews.ashx",{num:"event"},function(json) {
events=eval('(' + events + ')');
alert(events);
});
-----------
这时alert显示为[object],怎么才能知道这个events被正确赋值了呢?
我擦...我在7楼那段代码你修改修改. 就可以按照你想要的输出格式输出了.
还有.. 使用jq 的ajax() 这个函数 就可以直到 请求是否成功..
是否有数据 失败的话 还有一个可选方法的
前台试试
var Json=jQuery.parseJSON(json)
这样把返回数据以json格式的格式化!
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();
你要这种是吧