jquery的ajax,现在只要设定参数dataType:'josn',就报错,求指导Ashx在不用ms.javascript如何生成一个正确的json格式返回?我现在都是用response.write("([数据])"),前台用eval(data)来实现的。
经过我自己测试后得知,只有纯数据可以通过,哎回答的人都没有试过么?
using System.Web.Script.Serialization.JavaScriptSerializer
两点,注意返回值的header内容,以及json数据表示字段的必须是"而不能是'
给个Ashx的代码呗,谢谢
3.5下直接引用
using System.Web.Script.Serialization.JavaScriptSerializer
我想知道是否可以不用这个类包装?自己手工的代码也能起效果?
@happydaily:
那就自己手动拼写字符串
@越天: 我就是不知道什么样的格式才是合格的,我试过([]),({}),或者是复杂一点的,都不能通过
@happydaily:
StringBuilder result = new StringBuilder();
for (int i = 0; i < list.Count; i++)
{
result.Append("{\"ID\":\"");
result.Append(list[i].ID);
result.Append("\",\"OrderType\":\"");
result.Append(list[i].OrderType);
result.Append("\",\"OrderID\":\"");
result.Append(list[i].OrderID);
result.Append("\",\"OrderName\":\"");
result.Append(list[i].OrderName);
result.Append("\"},");
}
result.Remove(result.Length - 1, 1);
context.Response.Write("{\"Rows\":[" + result + "],\"Total\":\"" + list.Count + "\"}");
你确定你服务器端返回的也是json格式 吗??
不知道如何确定啊?
在你的页面后台文件 加入
#region Response设置 public void DeclareResponse() { Response.Clear(); Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddDays(-1); Response.AddHeader("pragma", "no-cache"); Response.AddHeader("cache-control", ""); Response.CacheControl = "no-cache"; Response.ContentType = "application/json"; }
ashx的contenTtype需要指定为 text/json,